【GeoDjango框架解析】读取矢量数据写入postgis数据库

news2024/11/29 4:43:51

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
【GeoDjango框架解析】读取矢量数据写入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, Polygon

os.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 timezone


class 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 SarLayer

def ct():
	l = {}
	file = r'C:\Users\lenovo\Desktop\矢量数据_广东\ROI_polygon_project.shp'
	ds = DataSource(file)
	mult_list = []
	area = 0
	for feature in ds[0]:
	    if feature.geom_type == 'Polygon':
	        mult_list.append(GEOSGeometry(feature.geom.ewkt))
	    area += feature.geom.area
	l['area'] = area
	l['geom'] = MultiPolygon(mult_list)
	l['file_shp'] = file
	SarLayer.objects.create(**l)

总结

以上就是今天要讲的内容,geodjango的功能还很强大,碰到具体问题需要具体分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于iframe一些通讯的记录(可适用工作流审批,文中有项目实践,欢迎咨询)

一.知识点(1).我们可以通过postMessage(发送方)和onmessage(接收方)这两个HTML5的方法, 来解决跨页面通信问题&#xff0c;或者通过iframe嵌套的不同页面之间的通信a.父页面代码如下<div v-if"src" class"iframe"><iframeref"iframe"id…

Kafka进阶篇-消费者详解Flume消费Kafka原理

简介 由于挺多时候如果不太熟系kafka消费者详细的话&#xff0c;很容易产生问题&#xff0c;所有剖析一定的原理很重要。 Kafka消费者图解 消费方式 消费者总体工作流程 消费者组初始化流程 消费者详细消费流程 消费者重要参数 bootstrap.servers 向 Kafka 集群建立初…

Jackson使用进阶

实现 注解 属性命名 JsonProperty 定义属性序列化时的名称。 JacksonAnnotation public interface JsonProperty {public final static String USE_DEFAULT_NAME "";public final static int INDEX_UNKNOWN -1;//指定属性的名称。String value() default USE_…

2022IDEA搭建springMvc项目

springmvc项目搭建一. 创建maven项目二. Add Framework Support三. 添加依赖并配置maven四. 配置前端控制器DispatcherServlet五. 配置SpringMVC.XML文件六. 创建controller类七. 创建index.html页面八. 查看jar包是否添加九. 配置tomcat&#xff08;重&#xff09;十. springm…

Kafka(7):生产者详解

1 消息发送 1.1 Kafka Java客户端数据生产流程解析 1 首先要构造一个 ProducerRecord 对象,该对象可以声明主题Topic、分区Partition、键 Key以及值 Value,主题和值是必须要声明的,分区和键可以不用指定。 2 调用send() 方法进行消息发送。 3 因为消息要到网络上进行传输…

国产蓝牙耳机什么便宜又好用?学生党平价蓝牙耳机推荐

蓝牙耳机凭借近几年的快速发展&#xff0c;越来越多的品牌、款式出现在人们的日常生活当中。最近看到很多人问&#xff0c;国产蓝牙耳机什么便宜又好用&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款平价蓝牙耳机&#xff0c;很适合学生党&#xff0c;一起来看看吧。…

推荐系统从入门到入门(3)——基于MapReuduce与Spark的分布式推荐系统构建

本系列博客总结了不同框架、不同算法、不同界面的推荐系统&#xff0c;完整阅读需要大量时间&#xff08;又臭又长&#xff09;&#xff0c;建议根据目录选择需要的内容查看&#xff0c;欢迎讨论与指出问题。 目录 系列文章梗概 系列文章目录 三、MapReduce 1.MapReduce详…

赶紧收藏:如何使用Telegram客户支持

想要使用Telegram需要客户支持&#xff1f;您需要了解的有关使用Telegram作为客户服务渠道的所有信息&#xff0c;本文章都会介绍。我们将首先讨论提供Telegram支持以及入门所需了解的内容。然后&#xff0c;我们将向您展示如何用智能客服工具ss可以帮助您提供一流的服务Telegr…

Oracle监听详解

本文摘自《ORACLE数据库技术实用详解》和《成功之路&#xff1a;ORACLE 11g学习笔记》 配置网络环境 本文将介绍和Oracle相关的网络问题&#xff0c;Oracle网络建立在操作系统之上。配置操作系统网络是配置Oracle网络的第一步。在配置Oracle网络之前&#xff0c;我们需要确保操…

数学基础--均值、方差、标准差、协方差

1. 简介 统计学中最核心的概念之一是&#xff1a;标准差及其与其他统计量&#xff08;如方差和均值&#xff09;之间的关系&#xff0c;本文将对标准差这一概念提供直观的视觉解释&#xff0c;在文章的最后我们将会介绍协方差的概念。 2. 概念介绍 均值 均值&#xff1a; 均值…

(一)Spring-Cloud源码分析之核心流程关系及springcloud与springboot包区别(新)

文章目录1. 前言2. springcloud简介3. Springcloud包简介4. Springcloud和Springboot流程关系5. Springcloud启动流程新增的功能和接口5.1 新增接口5.2 新增功能类5.2.1 spring-cloud-context包5.2.2 spring-cloud-commons包6. Springcloud实现机制带来的问题7. Springcloud和S…

【MyBatis】映射器配置|注解完成CRUD(三)

&#x1f697;MyBatis学习第三站~ &#x1f6a9;起始站&#xff1a;MyBatis概述&环境搭建(一) &#x1f6a9;本文已收录至专栏&#xff1a;数据库学习之旅 &#x1f44d;希望您能有所收获 上一篇我们学习了如何使用Mapper代理开发&#xff0c;核心配置文件&#xff0c;但却…

OnlyOffice验证(一)DocumentServer编译验证

OnlyOffice验证&#xff08;一&#xff09;DocumentServer编译验证 资源准备 Ubuntu16.04桌面版 验证用的版本[ubuntu-16机接上传ubuntu.04.7-desktop-amd67131.iso&#xff0c;&#xff08;别用高版本&#xff01;试过20.04耽误两三天&#xff0c;差点放弃了&#xff09;&am…

javaee之node.js与es6

问题1&#xff1a;在IDEA控制台为什么node显示不会出来命令 修改完之后记得重新启动电脑 问题2&#xff1a;response.end()作用 在Web开发中&#xff0c;浏览器端的请求到达服务器进行处理的时候&#xff0c;Response.End的作用就是让request执行到此结束&#xff0c;输出到客户…

移掉K位数字-力扣402-java贪心策略

一、题目描述给你一个以字符串表示的非负整数 num 和一个整数 k &#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 &#xff1a;输入&#xff1a;num "1432219", k 3输出&#xff1a;"1219&q…

Vue实战第5章:发布Vue工程到github静态页面

前言 本篇在讲什么 简单讲解关于Vue发布github静态页面相关的内容 本篇适合什么 适合初学Vue的小白 适合想要自己搭建网站的新手 本篇需要什么 对Html和css语法有简单认知 对Vue有简单认知 Node.js(博主v18.13.0)的开发环境 Npm(博主v8.19.3)的开发环境 Vue(博主v5.…

< elementUI组件样式及功能补全: 实现点击steps组件跳转对应步骤 >

文章目录&#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、点击steps跳转效果实现&#x1f449; 三、实现案例往期内容 &#x1f4a8;&#x1f449; 前言 在 Vue elementUi 开发中&#xff0c;elementUI中steps步骤条组件只提供了change方法&#xff0c;并未提…

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息&#xff0c;点击【确定】按钮&#xff0c;成功添加了一个工程。 2.2、新建迁…

海思SD3403/SS928V100开发(5)MIPI_YUV相机vio sample开发----修改思路

1. 前言 sensor输出格式: YUV422 8bit 硬件连接: MIPI_YUV相机(4lane MIPI) -> SS928V100 MIPI0(4lane) 框图: 2. 几个问题 基于SS928 SDK中的 vio sample修改; 但是sample里面都是基于RAW RGB sensor开发的sample, 没有现成的MIPI_YUV sensor的参考,需要自己…

[黑马程序员SSM框架教程] Spring-11-setter注入

思考&#xff1a;向一个类中传递数据要几种&#xff1f; set方法构造方法 思考&#xff1a;依赖注入描述了在容器中建立bean与bean之间依赖关系的过程&#xff0c;如果bean运行需要数字或字符呢 引用类型简单类型&#xff08;基本数据类型和字符串&#xff09; 注入方式&#x…