【GeoDjango框架解析——读取矢量数据写入postgis数据库】
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
geodjango框架解析之读取矢量数据shp文件写入postgis数据库
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 系列文章目录
- 前言
- 一、矢量文件
- 二、读取文件
- 1.安装geodjango环境
- 2.找到环境中的gdal和proj的位置
- 3.了解文件结构
- 三、通过django写入数据库
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
Django是python的web框架,GeoDjango 是一个包含在 Django 中的 contrib 模块,它将 Django 变成一个世界级的地理网络框架。对于地理数据,有一些我们常用的文件格式比如xx.shp文件,我们如何保存shp文件的内容到数据库呢?geodjango如何处理矢量文件和栅格文件,并建立与数据的关联呢?
提示:以下是本篇文章正文内容,下面案例可供参考
一、矢量文件
常用的矢量文件是shp,shp文件单独不能使用,需要与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'] = r"C:\Users\lenovo\PycharmProjects\1025\Mercury\Discern\venv\Lib\site-packages\osgeo\data\gdal"
os.environ['PROJ_LIB'] = r"C:\Users\lenovo\PycharmProjects\1025\Mercury\Discern\venv\Lib\site-packages\osgeo\data\proj"url = r'C:\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_key=True)create_time = models.DateTimeField('创建时间', default=timezone.now)alter_time = models.DateTimeField('修改时间', auto_now=True)geom = models.MultiPolygonField(null=True) # 地理信息area = models.FloatField('面积', default=0)file_shp = models.CharField('应用提取shp文件位置', max_length=1024, default='')class Meta:verbose_name = '图层数据'verbose_name_plural = verbose_name
views.py文件中的读取shp并写入数据库,因为shp存储的内容不同,尽量判断矢量形状,我这里都是多边。
from .models import SarLayerdef ct():l = {}file = r'C:\Users\lenovo\Desktop\矢量数据_广东\ROI_polygon_project.shp'ds = 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的功能还很强大,碰到具体问题需要具体分析。
相关文章:
【GeoDjango框架解析——读取矢量数据写入postgis数据库】
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录…...
注意啦!如何通过广告吸引客户直接下单?
2023年跨境电商越来越突出,据业内相关人士称,在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度,因此各行各业都响应政策,在新政策落实之前致力于平台的转型升级,做新时代创新型的高质量发展,其实细…...
ThinkPHP ^6图片操作进阶
图片裁剪、缩略、水印不再是TP框架系统内置的功能,需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行: composer require topthink/think…...
深入理解JS作用域链与执行上下文
变量提升: 变量提升( hoisting )。 我可恨的 var 关键字: 你读完下面内容就会明白标题的含义,先来一段超级简单的代码: <script type"text/javascript">var str Hello JavaScript hoi…...
UnityEditor编辑器扩展代码实现Project搜索的实现功能和切换Component等
反射实现切换Gameobjecect-Comp之前介绍过Kinematic Character Controller这个插件这个插件很容易和另外一个插件混淆,两个作者头像比较相像,而且这个插件的作者不太喜欢露脸(他现在做Dot-CharacterControl去了),几乎网…...
SKAdNetwork:从0到1
一、什么是SKAdNetwork https://developer.apple.com/documentation/storekit/skadnetwork iOS14.5开始,获取IDFA需要用户确认授权才可,此时SKAdNetwork 正式回归。 SKAdNetwork 是苹果在2018年推出的一个更加保护用户隐私的归因框架,并与…...
Spring+MVC+MYbatis注解开发
Spring常见注解 注解一:Configuration 用在类上面,加上这个注解的类可以成为一个spring的xml配置文件,使用的是java代码的配置 注解二:ComponentScan 用在类上,加上注解可以指定扫描路径 注解三:创建对…...
Redis主从复制过程
将目前服务器加入到端口号为6379的从服务器 一主二仆 当期中一台从服务器宕机之后 从服务器重启之后会变成单独的主服务器,与之前的主从复制没有关系,重新使用slaceof命令才能恢复到之前一样 主服务器宕机后,从服务器不会成为主服务器&…...
Spring boot开启定时任务的三种方式(内含源代码+sql文件)
Spring boot开启定时任务的三种方式(内含源代码sql文件) 源代码sql文件下载链接地址:https://download.csdn.net/download/weixin_46411355/87486580 目录Spring boot开启定时任务的三种方式(内含源代码sql文件)源代码…...
Tekton实战案例--S2I
案例环境说明 示例项目: 代码仓库:https://gitee.com/mageedu/spring-boot-helloWorld.git 构建工具maven pipeline各Task git-clone:克隆项目的源代码 build-to-package: 代码测试,构建和打包 generate-build-id:生…...
四、使用类实现功能
使用类实现功能 ts中类的继承 ES6中class类中,属性分为:实例上的属性,原型上的方法;也可以叫做:class的属性,class的方法。 类的继承叫法:父类>子类,基类>派生类;…...
Java多线程不安全的例子
目录 1. 可见性不安全例子 2. 原子性不安全例子 3. 有序性不安全例子 1. 可见性不安全例子 可见性:一个线程对共享变量的修改,另外一个线程不能够立刻看到。 如果多线程对共享数据进行访问而不采取同步操作的话,那么操作的结果是不一致…...
vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
据多个平台消息,vivo即将推出小折叠屏手机X Flip。据了解,vivo X Flip将采用轻盈便携的竖向折叠布局,以及非常受女性消费者喜爱的结构设计。那么,vivo X Flip会是vivo折叠屏的又一个爆款吗? 一、vivo X Flip小折叠屏手…...
MySQL中MVCC如何解决不可重复读以及幻读?
了解MVCC之前,我们首先需要了解以下两个概念:一致性非锁定读和锁定读,了解这两个概念之后我们在逐步分析MVCC。 一致性非锁定读和锁定读 一致性非锁定读(快照读) 对于 一致性非锁定读的实现,通常做法是加一个版本号或者时间戳字…...
设计模式第八讲:观察者模式和中介者模式详解
一. 观察者模式 1. 背景 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有&…...
关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)1. 配置域名的方式1.1 sudo vim /etc/hosts1.2 浏览器插件 LiveHosts2. 问题描述3. 解决问题方法3.1 尝试方法1—确保代理都关闭3.2 尝试方法2—确保域名能p…...
【代码随想录二刷】Day23-二叉树-C++
代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言:C 669. 修剪二叉搜索树 链接:https://leetcode.cn/problems/trim-a-binary-search-tree/ 递归 class Solution { public:Tree…...
Linux GPIO 开发指南
文章目录Linux GPIO 开发指南1 概述1.1 编写目的1.2 适用范围1.3 相关人员2 模块介绍2.1 模块功能介绍2.2 相关术语介绍2.3 总体框架2.4 state/pinmux/pinconfig2.5 源码结构介绍3 模块配置3.1 kernel menuconfig 配置3.2 device tree 源码结构和路径3.2.1 device tree 对 gpio…...
记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大
记一次后端生成Zip文件问题前言问题出现排查一、流没有关好二、写入了空白字节三、没有flush定位环节一、生成二、通过SwaggerUI、PostMan进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…...
python中savgol_filter的详细解释
目录savgol_filter简介savgol_filter原理参数window_length对平滑的效果参数polyorder的平滑效果savgol_filter简介 Savitzky-Golay滤波器最初由Savitzky和Golay于1964年提出,是光谱预处理中常用滤波方法,它的核心思想是对一定长度窗口内的数据点进行k阶…...
极简配置:OpenClaw快速接入Phi-3-mini-128k-instruct的HTTP接口
极简配置:OpenClaw快速接入Phi-3-mini-128k-instruct的HTTP接口 1. 为什么选择Phi-3-mini-128k-instruct 上周我在调试一个自动化文档处理流程时,发现现有的大模型响应速度跟不上我的实时需求。经过几轮测试,最终选择了微软开源的Phi-3-min…...
国外SEO优化公司如何提高网站在搜索引擎的排名_国外SEO优化公司的服务语言支持有哪些
国外SEO优化公司如何提高网站在搜索引擎的排名_国外SEO优化公司的服务语言支持有哪些 在当今全球化的互联网时代,国外SEO优化公司在提升网站在搜索引擎中的排名方面扮演着至关重要的角色。不仅仅是提升网站的曝光率,还能有效地增加网站的访问量和用户转…...
华为2288X V5服务器RAID配置实战:为iMaster NCE-CampusInsight单机部署打好地基
华为2288X V5服务器RAID配置全攻略:从硬件准备到iMaster NCE-CampusInsight部署 当企业级网络分析平台iMaster NCE-CampusInsight遇上华为2288X V5服务器,硬件配置的合理性直接决定了后续系统运行的稳定性与数据安全性。作为部署流程中的首个技术攻坚点&…...
OpenClaw宠物健康监测:Qwen2.5-VL-7B分析宠物照片发现异常
OpenClaw宠物健康监测:Qwen2.5-VL-7B分析宠物照片发现异常 1. 为什么需要AI宠物健康监测 作为一名养了三年猫的铲屎官,我经常担心错过宠物健康问题的早期信号。去年冬天,我家橘猫"橘子"突然食欲不振,带去医院才发现是…...
OpenClaw性能调优:Qwen3-14B镜像响应速度提升3倍实操
OpenClaw性能调优:Qwen3-14B镜像响应速度提升3倍实操 1. 为什么需要性能调优? 上周我在用OpenClaw自动处理100份PDF文档时,发现一个奇怪现象:同样的任务,晚上执行比白天快得多。经过排查才发现,白天我的本…...
Matlab代码源码实现:复杂环境下的非饱和非均质土坡三维稳定性分析极限研究
Matlab代码源码实现:复杂条件下非饱和非均质土坡三维稳定性极限分析MATLAB 代码的功能介绍文章,涵盖了代码的整体目标、结构、功能模块及其在工程与科研中的应用价值。一、项目背景与研究目标 本 MATLAB 程序集旨在实现 复杂条件下非饱和非均质土坡的三维…...
说说 TCP 的三次握手:为什么是三次而不是两次或四次?
说说 TCP 的三次握手:为什么是三次而不是两次或四次?01. 前言:TCP 连接的“破冰仪式”02. 三次握手的完整流程2.1 流程图2.2 三个报文详解2.3 状态变化追踪03. 为什么需要三次握手?(核心问题)3.1 问题一&am…...
x86汇编堆栈第二个案例
x86汇编堆栈第二个案例x86汇编堆栈第二个案例 1)案例介绍 咱们上节课先把常见的x86下的堆栈过了一遍,包括基本指令对吧,除了上一个案例咱们还可以做什么使用现在学到的内容?既然咱们知道了“后进先出(LIFO)…...
AGX Orin 部署PyTorch生态:从JetPack适配到torchvision编译避坑指南
1. AGX Orin开发环境初始化 刚拿到AGX Orin开发套件时,很多开发者会直接开始安装PyTorch,但往往忽略了基础环境配置的重要性。我去年在部署一个工业质检项目时就踩过这个坑——当时为了赶进度跳过了JetPack版本检查,结果导致后续torchvision编…...
从销售预测到异常检测:时间序列分解在业务中的5个高能应用场景
时间序列分解:驱动业务决策的5个实战场景解析 当电商平台的库存经理面对双十一前暴涨的销售曲线时,当数据中心运维工程师盯着突然飙升的服务器指标时,他们需要的不是数学公式的推导,而是能直接指导行动的时序洞察。时间序列分解技…...
