【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阶…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
