html网站二维码悬浮怎么做,包头网站建设包头,网站建设模拟器,百度 模块网站系列文章目录 提示#xff1a;这里可以添加系列文章的所有文章的目录#xff0c;目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录…系列文章目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、矢量文件二、读取文件1.安装geodjango环境2.找到环境中的gdal和proj的位置3.了解文件结构三、通过django写入数据库总结前言
提示这里可以添加本文要记录的大概内容
Django是python的web框架GeoDjango 是一个包含在 Django 中的 contrib 模块它将 Django 变成一个世界级的地理网络框架。对于地理数据有一些我们常用的文件格式比如xx.shp文件我们如何保存shp文件的内容到数据库呢geodjango如何处理矢量文件和栅格文件并建立与数据的关联呢 提示以下是本篇文章正文内容下面案例可供参考
一、矢量文件
常用的矢量文件是shpshp文件单独不能使用需要与prj 、dbf、sbn等文件一起使用。我们需要提前准备一份矢量文件。
二、读取文件
1.安装geodjango环境
2.找到环境中的gdal和proj的位置
python 安装gdal可能无法直接安装需要下载whl文件进行安装。参考链接https://blog.csdn.net/shanyanyi7173/article/details/125860103 python环境中安装gdal后在环境的site-package文件下可以找到文件夹这两个文件位置不一定是必要的但是如果你的程序中异常报错时需要明确gdal和proj位置。
3.了解文件结构
这里提供了一段python代码需要提供shp文件所在位置
import os
from django.contrib.gis.gdal import DataSource
from django.contrib.gis.geos import GEOSGeometry, MultiPolygon, Polygonos.environ[GDAL_DATA] rC:\Users\lenovo\PycharmProjects\1025\Mercury\Discern\venv\Lib\site-packages\osgeo\data\gdal
os.environ[PROJ_LIB] rC:\Users\lenovo\PycharmProjects\1025\Mercury\Discern\venv\Lib\site-packages\osgeo\data\projurl rC:\Users\lenovo\Desktop\矢量数据_广东\ROI_polygon_project.shp
ds DataSource(url)
ly ds[0]
f ly[0]
g GEOSGeometry(f.geom.ewkt)获得的结果如下图
三、通过django写入数据库
这里参考本站替他文章参考链接
models.py用于管理数据库字段内容如下不要忘了makemigrations和migrate
from django.contrib.gis.db import models
from django.utils import timezoneclass SarLayer(models.Model):id models.AutoField(primary_keyTrue)create_time models.DateTimeField(创建时间, defaulttimezone.now)alter_time models.DateTimeField(修改时间, auto_nowTrue)geom models.MultiPolygonField(nullTrue) # 地理信息area models.FloatField(面积, default0)file_shp models.CharField(应用提取shp文件位置, max_length1024, default)class Meta:verbose_name 图层数据verbose_name_plural verbose_nameviews.py文件中的读取shp并写入数据库因为shp存储的内容不同尽量判断矢量形状我这里都是多边。
from .models import SarLayerdef ct():l {}file rC:\Users\lenovo\Desktop\矢量数据_广东\ROI_polygon_project.shpds DataSource(file)mult_list []area 0for feature in ds[0]:if feature.geom_type Polygon:mult_list.append(GEOSGeometry(feature.geom.ewkt))area feature.geom.areal[area] areal[geom] MultiPolygon(mult_list)l[file_shp] fileSarLayer.objects.create(**l)总结
以上就是今天要讲的内容geodjango的功能还很强大碰到具体问题需要具体分析。