当前位置: 首页 > news >正文

赤峰做网站的公司湘潭哪里做网站

赤峰做网站的公司,湘潭哪里做网站,前端搜索网站引擎怎么做,无法更新网站主页 dedecmsOGR库是一个非常流行的处理地理空间矢量数据的开源库。它可以读取丰富的数据格式#xff0c;允许用户进行几何处理、属性表操作、数据分析#xff0c;是个非常强大的开源GIS库。目前OGR已集成在GDAL库中#xff0c;可以说是GIS的本源之一了#xff0c;有大量的软件用到了这…OGR库是一个非常流行的处理地理空间矢量数据的开源库。它可以读取丰富的数据格式允许用户进行几何处理、属性表操作、数据分析是个非常强大的开源GIS库。目前OGR已集成在GDAL库中可以说是GIS的本源之一了有大量的软件用到了这个库。本篇文章是关于OGR库的一些基础用法汇总将会持续更新~这里推荐两个比较好的OGR学习资源网站Welcome to the Python GDAL/OGR Cookbook!​pcjericks.github.iohttps://gdal.org/python/​gdal.org1. GDAL库的安装首先要去下面的网站https://www.lfd.uci.edu/~gohlke/pythonlibs/​www.lfd.uci.edu找到GDAL对应的地址下载gdal对应python版本的whl文件这里因为我是python 3.7 64位的所以下载相应版本就行了下载到本地后对文件存放的文件夹按住shift鼠标右键选择“在此处打开Powershell窗口”然后在弹出来的对话框中键入“pip install 文件名”按回车等待安装即可在安装好之后会成功安装osgeo这个包。OGR模块是在osgeo包中的。这个包里的所有模块都是以小写字母命名。2. 读取矢量数据2.1 定义Driver在正式读写之前得先理解一下OGR的对象组织形式弄清楚OGR类之间的关系。在打开一个矢量数据前首先需要定义一个driver用来告诉OGR你想要读取何种格式的数据。每个driver就是对应一种数据格式比如‘ESRI Shapefile’就是对应的shp格式。OGR可以读取70多个数据格式基本常用的都包含了。下面是定义driver的一个示例from osgeo import ogr driver ogr.GetDriverByName(ESRI Shapefile) 2.2 OGR类结构在讲如何打开数据之前最好先了解一下OGR的对象组织逻辑。使用OGR打开一个矢量数据如shp文件或GeoJSON文件会产生一个DataSource对象。该对象包含若干个Layer每个Layer就是一个要素集。值得注意的是大多数矢量数据格式一般只有一个Layer少数有多个如SpatiaLite格式。既然Layer是个要素集可想而知它包含的就是一个个的feature了。Feature的概念稍微学过GIS原理的朋友应该都知道Arcmap里也经常提到就是几何对象和属性表的集和。所以feature包含的就是geometry和attribute。整理一下可见下图OGR类结构2.3 读取矢量数据通过对driver对象调用Open方法可以打开一个文件打开的结果就是一个Data Souce对象。通过print可以查看到这个信息shp_test是个osgeo.ogr.DataSource对象。from osgeo import ogr driver ogr.GetDriverByName(ESRI Shapefile) #这个函数是不区分大小写的filename rF:ZhihuDATA shp_test driver.Open(filename,0) #0是只读1是可写 if shp_test is None:print (could not open)sys.exit(1) print(shp_test)也可以直接使用ogr.open函数打开文件。该函数会根据文件后缀名自动选择driver进行数据读取。from osgeo import ogrfilename rF:ZhihuDATA shp_test ogr.Open(filename)2.4 读取要素个数OGR的Layer概念类似于ArcGIS里的FeatureClass就是多个同类要素(点、线、多边形)的集和。可以通过dir函数获取Layer可以使用的方法。这里使用GetLayer方法获取shp数据的图层再对其使用GetFeatureCount方法可以获取shp数据中的元素个数。layer shp_test.GetLayer() dir(layer) n layer.GetFeatureCount() print (feature count:, n)2.5 查看数据2.5.1 查看属性可在cmd中使用pip install https://github.com/cgarrard/osgeopy-code/raw/master/ospybook-latest.zip安装ospybook包。这个包是书《Geoprocessing with python》作者开发的。可以使用print_attributes来打印出数据属性表可以直接输入文件名也可以输入layer。不建议使用这个函数来打印大型数据的全部属性表可使用数字来控制打印几行并指定打印的字段名。import ospybook as pbpb.print_attributes(filename,3,[Shape_Area,ID,long,lat]) pb.print_attributes(lyr,3,[Shape_Area,ID,long,lat]) #既可以调用文件名也可以调用图层效果等价2.5.2 查看图形ospybook 提供了用于绘图的类。它是基于matplotlib的所以必须安装matplotlib。交互式图像在创建之后无需使用draw函数调用就可呈现。声明方法是建立一个VectorPlotter类的新实例。import os os.chdir(rF:ZhihuDATA) #设置工作空间 from ospybook.vectorplotter import VectorPlottervp VectorPlotter(True) #声明图像为交互式图像 vp.plot(filename,fillFalse) #fill是用来控制是否填充要素默认是true2.6 读取四至范围使用GetExtent方法获得四至信息结果是一个元组顺序为左右下上。若shp数据本身含有投影坐标则输出的也是投影坐标系的值。extent layer.GetExtent() print (extent:, extent) print (x range:, extent[0], extent[1]) print (y range:, extent[2], extent[3])2.7 读取单个要素使用GetFeature方法按照FID读取要素这里读取的第二个要素即FID1的那个要素。通过GetField方法可读取要素指定列信息值得注意的是这里需要输入的列名不分大小写同shp格式的要求一致。feat layer.GetFeature(1) fid feat.GetField(id) area feat.GetField(shape_area) print (fid) print (area) dir(feat)2.8 遍历要素使用GetNextFeature方法可以省去使用For循环按ID读取的低效率要使用个try except机制不然再最后一个要素读完之后GetNextFeature方法仍然会读下一个空要素这时输出面积会报错。ResetReading函数是用来复位的不然下次使用GetNextFeature程序接着上次读的位置继续读。feat layer.GetNextFeature() #读取下一个 while feat:feat layer.GetNextFeature()try:area feat.GetField(shape_area) print(area)except:print(Done!) layer.ResetReading() #复位也可以通过for循环直接遍历每个要素。但值得注意的一点是当前要素问题。比如我们用For循环遍历了一遍Layer中的所有feature并输出了它们一个字段的值。若想再通过for循环遍历一遍输出另一个字段的值你会发现得不到任何结果。这是因为在第一次for循环后指针停在了最后一个feature上必须使用Layer.ResetReading()函数来进行重置。for i,feat in enumerate(layer):if i 5:breakxfeat.geometry().GetX()yfeat.geometry().GetY()fid feat.IDarea feat.GetField(shape_area) print (fid,area,x,y) layer.ResetReading() #复位2.9 提取要素几何信息使用GetGeometryRef方法读取要素几何信息通过dir函数可以查看geom可以使用的方法GetX和GetY可以直接打印一个个点的坐标使用geom.Area()可以读feature的面积默认单位为㎡。feat layer.GetFeature(1) geom feat.GetGeometryRef()print(geom) print(geom.Area())2.10 释放内存要素.Destory是先关闭单个要素后面的Destory是关闭整个DataSource关闭数据源相当于文件系统操作中的关闭文件。feat.Destroy() shp_test.Destroy()2.11 删除文件使用DeleteDataSource可以删除shp文件及其附属文件如dbfpoj等文件。import os filename F:/Zhihu/DATA/testCopy.shp if os.path.exists(filename):driver.DeleteDataSource(filename)print(File was deleted!) else:print(File not exist)
http://www.zqtcl.cn/news/895722/

相关文章:

  • 做学校网站简述网站的制作步骤
  • 怎样让网站响应式推广策划案
  • 网站开发 面试 适当吹牛网站文件命名规则
  • 河北省建设中心网站图片分享网站源码
  • 工信部网站备案修改个人求职网站怎么做
  • 关于建设公司网站的申请宁波网站制作出售
  • 织梦电影网站免费模板网站域名asia是
  • 顺德中小企业网站建设宁乡市建设局网站
  • 静态网页模板 网站模板兰州做网站价格
  • 吕梁推广型网站建设godaddy托管 wordpress
  • 什么网站百度收录好珠海哪里做网站的
  • 如何介绍网站模板金融网站模版
  • 网站内链怎么优化e时代网站制作
  • 记事本做网站素材代码国内十大4a广告公司
  • 一米八效果图网站商业网站平台
  • 做搜狗手机网站优化产品推广计划怎么写
  • 网站链接优化怎么做ftp服务器
  • 什么网站可以接单做海报网站信息员队伍建设方案
  • 淘宝联盟 网站怎么做网站运营推广方案设计
  • 网站建设数据库类型百度seo现状
  • 德州网站优化公司平面设计公司企业logo设计
  • 山东平台网站建设价位网站广告文案
  • 可以做哪方面的网站万网董事长是谁
  • 京东网站开发费用程序员找工作的网站
  • 怎么做网站首页psdwordpress 注册验证
  • 商丘做网站的公司有哪些郑州网站公司排名
  • 竞价网站与竞价网站之间做友情链接企业邮箱查询
  • 国外jquery网站wordpress 下一页 模板
  • 安卓手机做网站云南建设厅网站职称评定
  • 国外域名注册商网站邮箱登陆登录入口