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

化妆品网站推广策划书网页制作基础教程我的足球网

化妆品网站推广策划书,网页制作基础教程我的足球网,教育系统网站备案,阜南网站建设公司老样子最近有项目需要将N个矢量文件合并成一个,总不能用ArcGIS一个个导入吧。所以我就想着用Python编个程序实现批量合并矢量。我之前也发了一些关于Python操作矢量数据的文章:【Python&GIS】Python处理矢量数据的基本操作(查询、修改、删…

        老样子最近有项目需要将N个矢量文件合并成一个,总不能用ArcGIS一个个导入吧。所以我就想着用Python编个程序实现批量合并矢量。我之前也发了一些关于Python操作矢量数据的文章:【Python&GIS】Python处理矢量数据的基本操作(查询、修改、删除、新建),如果大家感兴趣可以去我的主页看看,给我点个关注!

一、导入库

import os
from osgeo import ogr

二、合并shp

        整体的思路就是创建一个空的shp资源,然后遍历文件夹中所有的shp,然后针对每一个shp再遍历它的要素,将每个要素写入创建的新shp中。需要注意的是最后需要释放内存,不然数据不会写入shp。

def Merge_shp(path):print("-----------------合并shp-----------------")path_lists = os.listdir(path)src_proj = Nonefor c in path_lists:if c.endswith(".shp"):print(c)ds = ogr.Open(path+c)layer = ds.GetLayer()# 打开需要转换的矢量数据,获取图层src_proj = layer.GetSpatialRef()break# 获取其源坐标信息output_file = path+"Merge.shp"driver = ogr.GetDriverByName('ESRI Shapefile')output_ds = driver.CreateDataSource(output_file)output_layer = output_ds.CreateLayer("Shp", srs=src_proj, geom_type=ogr.wkbMultiPolygon)new_field = ogr.FieldDefn('value', ogr.OFTReal)  # 给目标shp文件添加一个字段,用来存储原始栅格的pixel valueoutput_layer.CreateField(new_field)for i in range(0, len(path_lists)):if path_lists[i].endswith(".shp"):print("正在合并%s......" % path_lists[i])input_ds = ogr.Open(path + path_lists[i])input_layer = input_ds.GetLayer()for feature in input_layer:output_layer.CreateFeature(feature.Clone())input_ds = Noneoutput_ds = None

三、获取要素面积

        我这里给shp添加了一个新的字段,用来计算面积。大家视情况而定,这个可以没有。

def Get_polygon_area(path_shp):""":param path_shp: 输入矢量文件:return:"""print("---------------获取矢量面积---------------")driver = ogr.GetDriverByName("ESRI Shapefile")  # 创建数据驱动ds = driver.Open(path_shp, 1)  # 创建数据资源layer = ds.GetLayer()new_field = ogr.FieldDefn("Area", ogr.OFTReal)  # 创建新的字段# new_field.SetWidth(32)# new_field.SetPrecision(16)layer.CreateField(new_field)for feature in layer:geom = feature.GetGeometryRef()geom2 = geom.Clone()area = geom2.GetArea()  # 默认为平方米# area = area / 1000000 # 转化为平方公里feature.SetField("Area", area)# feature.GetField('Area')layer.SetFeature(feature)ds = None

四、完整代码

# -*- coding: utf-8 -*-
"""
@Time : 2023/10/20 11:56
@Auth : RS迷途小书童
@File :Vector Data Batch Merge.py
@IDE :PyCharm
@Purpose:矢量数据批量合并成一个文件并计算面积
"""
import os
from osgeo import ogrdef Merge_shp(path):print("-----------------合并shp-----------------")path_lists = os.listdir(path)src_proj = Nonefor c in path_lists:if c.endswith(".shp"):print(c)ds = ogr.Open(path+c)layer = ds.GetLayer()# 打开需要转换的矢量数据,获取图层src_proj = layer.GetSpatialRef()break# 获取其源坐标信息output_file = path+"Merge.shp"driver = ogr.GetDriverByName('ESRI Shapefile')output_ds = driver.CreateDataSource(output_file)output_layer = output_ds.CreateLayer("Shp", srs=src_proj, geom_type=ogr.wkbMultiPolygon)new_field = ogr.FieldDefn('value', ogr.OFTReal)  # 给目标shp文件添加一个字段,用来存储原始栅格的pixel valueoutput_layer.CreateField(new_field)for i in range(0, len(path_lists)):if path_lists[i].endswith(".shp"):print("正在合并%s......" % path_lists[i])input_ds = ogr.Open(path + path_lists[i])input_layer = input_ds.GetLayer()for feature in input_layer:output_layer.CreateFeature(feature.Clone())input_ds = Noneoutput_ds = Nonedef Get_polygon_area(path_shp):""":param path_shp: 输入矢量文件:return:"""print("---------------获取矢量面积---------------")driver = ogr.GetDriverByName("ESRI Shapefile")  # 创建数据驱动ds = driver.Open(path_shp, 1)  # 创建数据资源layer = ds.GetLayer()new_field = ogr.FieldDefn("Area", ogr.OFTReal)  # 创建新的字段# new_field.SetWidth(32)# new_field.SetPrecision(16)layer.CreateField(new_field)for feature in layer:geom = feature.GetGeometryRef()geom2 = geom.Clone()area = geom2.GetArea()  # 默认为平方米# area = area / 1000000 # 转化为平方公里feature.SetField("Area", area)# feature.GetField('Area')layer.SetFeature(feature)ds = Noneif __name__ == "__main__":path1 = r"G:/2/"Merge_shp(path1)Get_polygon_area(path1+"Merge.shp")

        大家在使用时只需要将你要合并的shp全部放入一个文件夹,然后再将main中文件夹路径改成自己的就行了,程序最后会在该目录下生成Merge.shp文件,这个就是合并之后的结果。

http://www.laogonggong.com/news/72014.html

相关文章:

  • 做的比较好的律师网站织梦网站后台密码忘记了怎么做
  • 网站开发 案例详解莱芜网络公司平台
  • 电子商务网站应该如何建设网站建设是属于虚拟产品吗
  • 一级a做爰片免费网站丶莱芜新闻视频回放
  • 网站如何做宣传推广青州网站制作哪家好
  • 做产品展示网站会网站开发维护的ps什么岗位
  • 做枪版视频网站犯法吗用ih5做微网站
  • 一家专门做房产特卖的网站seo范畴
  • 外贸建站wordpress想学做网站可以在哪学
  • 网站文章只被收录网站首页中文资源在线官网
  • 深圳市建设主管部门门户网站鞍山发布
  • 菏泽手机网站建设看守所加强自身网站建设工作总结
  • 报社网站建设方案资源网盘链接
  • 襄樊网站建设公司那个做头像的网站好
  • 南昌网站建设南昌平泉网站建设
  • 网站做app用什么语言wordpress页面中添加小工具栏
  • 邢台做网站哪家便宜淮南建设局网站备案
  • 馆陶企业做网站推广wordpress 源文件导入
  • 做网站建设一年能赚多少钱哈尔滨网站改版
  • 导航网站优化类似in a wordpress
  • seo网络营销外包公司官网seo哪家公司好
  • 网站建设600分站优缺点中国建行网站首页
  • 100m网站注册福建住房和城乡建设厅网站
  • 天津市建设教育培训中心网站游戏私人服务器搭建
  • 做购物网站的数据库最好的网站建设哪家好
  • 高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站商业空间设计图片
  • 广州网站建设技术方案企业网络营销策略分析案例
  • 自定义功能的网站网站负责人不是法人
  • 广州app制作公司seo优化几个关键词
  • 特效音网站建一个网站带管理需要多少钱一年