作者:阿振 写作时间:2020-06-13 又是一个周末 ---- 开篇 《Python空间数据处理实战》系列的博文好久都没有更新了,今天乘周末有点时间,补了个觉,然后写几篇博文。...关于Python空间数据处理,如果大家有什么想看到的内容,欢迎评论区留言,我会增加一些大家需要的内容! 今天我打算用四篇博客简要介绍一下如何对空间矢量数据的属性数据进行操作。...Show me the code. from osgeo import ogr ogr.UseExceptions() # 首先定义每个省全称到简称的映射字典 names = { '北京':...= ogr.Open('.....注意我们这里新建的字段的类型是字符串类型ogr.OFTString,当然我们还可以新建其他类型的字段,例如整形ogr.OFTInteger,实数形ogr.OFTReal,日期型ogr.OFTDate等。
从这篇博文开始,我们会简单介绍几种GIS系统中最常见最简单的空间分析功能,并使用Python的GDAL API进行实现。...首先,我们来看一下开源GIS软件QGIS中提供的几种简单的空间分析工具,我们接下来的几篇博文会介绍如何使用Python脚本实现这些功能。 ?...from pathlib import Path import ogr ogr.UseExceptions() in_ds: ogr.DataSource = ogr.Open('.....: ogr.Driver = ogr.GetDriverByName('ESRI Shapefile') if Path(fname).exists(): driver.DeleteDataSource...(fname) # 新建DataSource,Layer out_ds: ogr.DataSource = driver.CreateDataSource(fname) out_lyr: ogr.Layer
代码演示 import ogr ogr.UseExceptions() ds_province: ogr.DataSource = ogr.Open('.....使用Python的内置filter()函数对省进行过滤,通过NAME字段找出湖北省。filter()函数的第一个参数是一个自定义函数,第二个参数是一个可迭代对象iterable。...代码演示 import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('.....city.GetGeometryRef())) for i in range(1, 4): print(selected[i].GetField('name')) del ds 方法总结 跟案例一一样,我们使用Python...接着我们使用Python内置函数sorted()根据每个城市到武汉市的距离进行排序。
引言 在python与地理空间分析(1)与(2)中我们介绍了GIS中常用的数据类型、python在处理地理空间数据时用到的包以及给定经纬度计算空间距离的算法,本期我们主要介绍对地理空间分析中常用到的矢量数据...Shapefile文件介绍 地理空间分析中有多种矢量数据,大家最常见的是Shapefile(.shp)文件和GeoJSON文件(常用于前端网站发布使用的地理数据格式),GeoJSON文件几乎和python...的字典和列表等数据类型一模一样,可以通过python自带的json库直接解析。...kml文件 Conclusion 本期主要介绍了python GDAL/OGR对shp文件的读写和格式转换,下一部分将对shp文件的空间分析算法和常用操作进行介绍,例如判断两个shp的交并差补以及点插值为面等算法内容...Python命名空间和作用域介绍 中国地图的正确打开方式
(oFieldID, 1) # 再创建一个叫FeatureName的字符型属性,字符长度为50 oFieldName =ogr.FieldDefn("FieldName", ogr.OFTString)...补充知识:python使用GDAL生成shp文件 GDAL是一个开源的地理工具包,其支持基本所有的地理操作,其有python、java、c等语言包,是地理信息C端开发不可越过的工具,鉴于python语言的简单性...,这里使用python中GDAL包来进行shp文件的生成,这里本质是利用ogc地理标准的坐标字符串来生成shp。...第一步:安装GDAL环境,建议下载后,本地安装,注意与python版本号要对应,可参考网上教程。...以上这篇python使用gdal对shp读取,新建和更新的实例就是小编分享给大家的全部内容了,希望能给大家一个参考。
(Geospatial Data Abstraction Library) 地理空间数据抽象库 用C/C++编写,支持多种矢量/栅格数据,支持python、.NET、Ruby等语言绑定,开放源码。...> > # 从shapefile中读取点要素,以城市人口数据为例 import sys from osgeo import ogr # 打开数据源,打开图层 fn = 'E:/公众号/python...Clermont-Ferrand 233050 3.080008095928406 45.779982115759424 获取要素信息 每个图层包括一个或多个要素 每个要素表示一个地理对象,也是一个python...丰富的科学计算库分析数据,得出科学结论 有时候也需要自己生产数据,生成shapefile供其他GIS系统读写 生产数据可以在有GUI的GIS系统中手工操作,也可以通过编程语言批量操作 用python的优点...在GDAL/OGR中,不恰当的使用几何对象会导致python崩溃!
from osgeo import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('...../data/Provinces.shp') # 注意Layer的名称不能包含中文 layer: ogr.Layer = ds.GetLayer() # 选择出中学数量大于1万所的省份 query: str...然后使用ExecuteSQL()方法执行查询,得到的查询结果仍然是一个ogr.Layer图层类,但是图层中的要素属性只包含我们查询语句中指定的字段 对于第二个案例,我们本来可以使用一个嵌套的SELECT...from osgeo import ogr ogr.UseExceptions() ds: ogr.DataSource = ogr.Open('.....)) print(selected[0].GetField('HighSchool')) 方法总结 使用遍历Feature要素的方法进行查询是我们在获取了图层包含的所有Feature要素集合以后,使用Python
概述: 本文讲述如何在Python中用GDAL实现根据输入矢量边界对栅格数据的裁剪。 效果: ? 裁剪前 ? 矢量边界 ?...the rasterized clipper shapefile # to a mask for use within GDAL. def imageToArray(i): """ Converts a Python...a.shape=i.im.size[1], i.im.size[0] return a def arrayToImage(a): """ Converts a gdalnumeric array to a Python...+GDAL | 读取矢量并写出txt 这篇文章主要描述了如何使用GDAL/OGR打开矢量文件、读取属性表,并将部分属性写出至txt。...代码 import ogr,sys,os import numpy as np os.chdir(r'E:\') #设置driver,并打开矢量文件 driver = ogr.GetDriverByName
可供选择的矢量格式数目很饿的,开源矢量库OGR支持超过86种矢量格式,FME支持超过188种矢量格式。...库,python中解析Shapefile文件的模块大都是基于OGR库的。...库 OGR库是python处理矢量数据的通用库,也是许多处理矢量数据包的依赖项。...from osgeo import ogr shp=ogr.Open("point.shp") layer=shp.GetLayer() for feature in layer: geometry...哭的数据访问功能提供了一套简洁的python api,大大提高了OGR库在python中的易用性。
方法介绍 跟栅格数据投影转换一样,使用GDAL库,我们有两种方法进行矢量数据的重投影: 使用命令工具及其对应的命令行API接口进行转换(简单,准确,实践中一定要用这种方法) GDAL提供了ogr2ogr...命令行工具进行矢量数据投影转换,命令如下:ogr2ogr -t_srs "+proj=aea +lat_1=25 +lat_2=47 +lat_0=30 +lon_0=105 +x_0=0 +y_0=0...-t_srs选项制定输出数据投影,当然可以是ESPG,也可以是PROJ4或者OGC WKT格式的投影定义都OK GDAL对该命令的封装的C/C++函数是GDALVectorTranslate(),Python...中是gdal.VectorTranslate() 使用GDAL提供的基本API进行实现 如果要自己利用基本API函数实现的话,基本思路如下: 利用osgeo.ogr.Driver.CreateDataSource...src_layer = src_ds.GetLayer(0) src_srs = src_layer.GetSpatialRef() # 输入数据投影 调用基本API函数实现 from osgeo import ogr
GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量矢量数据的解析,GDAL主要用于空间栅格数据的读写。...该库在C/C++/python/ruby/VB/java/C#(这个暂时不完全支持)下都能用。 电脑环境准备 Anaconda版本: ? Python版本: ?...从上面的运行结果来看我们已经成功在Python3中安装GDAL库。...cp37表明对应python3.7版本,win32表明对应32位,win_amd64表明对应64位。 由于我的电脑是64位,python版本是python3.6 所以我选择下载这个文件 ?
4 GDAL/OGR功能特点· 多格式支持:GDAL/OGR支持多种栅格和矢量地理空间数据格式,包括ESRI Shapefiles、S-57、SDTS、PostGIS、Oracle Spatial等。...· 多语言支持:GDAL/OGR提供了多种编程语言的绑定,如C、C++、Perl、Python、Java、C#等。· 高性能:GDAL/OGR使用面向对象的C++语言编写,具有很高的执行效率。...应用场景· 遥感数据处理:GDAL/OGR适用于遥感数据的处理和分析,支持多种卫星数据和地理信息系统数据格式。...· 地理空间数据转换:GDAL/OGR提供了强大的数据转换功能,适用于需要跨平台数据处理的场景。...QGIS、GeoServer、PostgreSQL with PostGIS、GDAL/OGR、MapServer和CesiumJS等开源项目在各自的应用领域中表现出色,广泛应用于政府、企业、科研等多个领域
概述: 本文讲述如何在Python中用GDAL实现根据输入矢量边界对栅格数据的裁剪。...-*- """ @author lzugis @date 2017-06-02 @brief 利用shp裁剪影像 """ from osgeo import gdal, gdalnumeric, ogr...rasterized clipper shapefile # to a mask for use within GDAL. def imageToArray(i): """ Converts a Python..., i.im.size[0] return a def arrayToImage(a): """ Converts a gdalnumeric array to a Python...info srcImage = gdal.Open(raster_path) geoTrans = srcImage.GetGeoTransform() # Create an OGR
材料: PG数据库(postgreSQL),python,postgis(重点) 过程: Tip~首先,我想先说一下在python中运行出现的报错问题(如果你们遇到这个问题可以看一眼,如果你没遇到这个问题...不管怎么样,你需要安装好Python和PostresSQL数据库~这里不加展开了,然后你需要安装~~~~~~PostGIS~~~~~~由PostGIS官网下载: http://www.postgis.org...准备就绪后进入pg数据库的sql界面,输入: CREATE EXTENSION postgis; (这步可以忽略,如果python运行出错,回头运行也可以) 确认PosrGIS(如下图) 首先,你需要有一个...代表具体字段,相当于'geometry'字段为地理信息 终于,顺利写入(鬼知道我在报错的过程中经历了什么): 更多的,利用GDAL写入shp也可以正常运行了: import os os.system('ogr2ogr...user dbname=dbname password=password"+'"'+' '+'"'+"D:/Thesis/fjsouthwest/grid/mxn/mxn.shp"+'"') 往期 Python-gdal
代码展示 from pathlib import Path import ogr ogr.UseExceptions() # 读取被裁剪的数据 in_ds: ogr.DataSource = ogr.Open.../data/County.shp') in_lyr: ogr.Layer = in_ds.GetLayer() # 读取裁剪范围数据 method_ds: ogr.DataSource = ogr.Open...driver: ogr.Driver = ogr.GetDriverByName('ESRI Shapefile') if Path(fname).exists(): driver.DeleteDataSource...(fname) # 新建DataSource,Layer out_ds: ogr.DataSource = driver.CreateDataSource(fname) out_lyr: ogr.Layer...方法总结 首先我们使用ogr.Open()函数分别读取被裁剪的数据以及裁剪范围数据;使用GetLayer()方法获取数据的图层。裁剪范围数据在GDAL中被称为Method Layer。
深感使用规范的存储系统来统一管理gis数据的好处,特别是数据量大了之后,优势便更加明显,你可以选择将很多需要做空间计算的步骤转移到Postgis数据库内进行计算,要知道Postgis提供的空间计算能力与R和Python...rstudy/CHN_adm/bou2_4p.shp", encoding="utf-8", use_iconv=TRUE )) OGR...use_iconv=TRUE, encoding = "utf-8", stringsAsFactors = FALSE )) OGR...mapdata/china.topojson", encoding="utf-8", use_iconv=TRUE )) OGR...postgres' password='708965'" l_ply(input_list,task,conn) } #启动任务 Project_io("D:/R/mapdata/Province") Python-gis
思路是我们遍历图层中的每一个Feature要素,然后通过ogr.Feature的SetField()方法更新属性值。 代码展示 Talk is cheap....Show me the code. from osgeo import ogr ogr.UseExceptions() # 打开一个Shapefile ds: ogr.DataSource = ogr.Open.../data/省级行政区.shp', update=True) layer: ogr.Layer = ds.GetLayer() # 填充属性值 for feature in layer: name...feature.SetField('NAME', name) # 修改完了记得Set一下 layer.SetFeature(feature) # 关闭数据集 ds = None 方法总结 首先,我们使用ogr.Open
GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量矢量数据的解析,GDAL主要用于空间栅格数据的读写。此外,空间参考及其投影转换使用开源库 PROJ.4进行。...GDAL提供了C/C++借口,并且通过SWIG提供了Python,Java,C#等的调用借口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。...OGR矢量数据模型中比较重要的几个概念: Geometry(OGRGeometry类表示了一个空间几何体,包含几何体定义,空间参考,以及作用在几何体之上的空间操作,几何体和OGC WKB,WKT格式直接的导入导出...总结一下:一个数据集(Dataset)可以包含多个图层(Layer),一个图层中可以包含多个空间要素(Feature),一个Feature由一个空间几何体(Geometry)及其属性构成 参考资料:OGR
基本思路 使用GDAL创建Shapefile数据的基本步骤如下: 使用osgeo.ogr.Driver的CreateDataSource()方法创建osgeo.ogr.DataSource矢量数据集...使用osgeo.ogr.DataSource的CreateLayer()方法创建一个图层 使用osgeo.ogr.FieldDefn()定义Shapefile文件的属性字段 创建osgeo.ogr.Feature...对象,设置每个属性字段的值,使用Feature对象的SetGeometry()定义几何属性 创建Feature对象以后,使用osgeo.ogr.Layer的CreateFeature()添加Feature...) # 添加属性定义 fname = ogr.FieldDefn('Name', ogr.OFTString) fname.SetWidth(24) layer.CreateField(fname) fcx...= ogr.FieldDefn('CenterX', ogr.OFTReal) layer.CreateField(fcx) fcy = ogr.FieldDefn('CenterY', ogr.OFTReal
总结就是,暂时没有直接添加列的办法,只能先读入python,利用pandas写一个dataframe,加入新的列,再将整备好的dataframe写入数据库。...参考:https://stackoverflow.com/questions/53850316/insert-python-numpy-array-into-postgresql-database 以上的不好用...,跟想象中不一样,得到的结果会在列方向上出现很多null值 from osgeo import gdal,ogr import struct import os import numpy as np path...src_ds.GetGeoTransform() rb=src_ds.GetRasterBand(1) shp_filename = 'D:/minxinan/zhandianpoint/121paixuwgs.shp' ds=ogr.Open
领取专属 10元无门槛券
手把手带您无忧上云