如何使用Python和ArcGIS绘制广州板块地图?
- 内容介绍
- 文章标签
- 相关推荐
本文共计969个文字,预计阅读时间需要4分钟。
使用Python和ArcPy模块绘制广州市板块地图:
数据:- 原始数据:广州市行政区划数据- 数据格式:Shapefile
完整代码:
pythonimport arcpy
设置工作环境arcpy.env.workspace=path_to_your_directory
输入参数input_layer=input_shapefile.shpoutput_layer=output_shapefile.shp
创建新的Shapefilearcpy.CreateFeatureclass_management(arcpy.env.workspace, output_layer, POLYGON)
添加字段arcpy.AddField_management(output_layer, NAME, TEXT)
添加要素with arcpy.da.InsertCursor(output_layer, [SHAPE@, NAME]) as cursor: with arcpy.da.SearchCursor(input_layer, [SHAPE@, NAME]) as search_cursor: for row in search_cursor: cursor.insertRow([row[0], row[1]])
绘制地图arcpy.management.AddLayer(output_layer, Map)
保存并关闭arcpy.management.SaveACopy(output_layer, output_shapefile_copy.shp)
代码解读:
1. 导入ArcPy模块。
2.设置工作环境。
3.输入参数:输入图层和输出图层。
4.创建新的Shapefile并添加字段。
5.添加要素:遍历输入图层中的每个要素,并将其添加到输出图层中。
6.添加图层到地图中。
7.保存并关闭。
使用方法:
1. 将上述代码保存为`.py`文件。
2.将输入数据(Shapefile)和代码文件放在同一目录下。
3.在命令行中运行代码文件:`python your_script_name.py`
4.代码将创建一个新的Shapefile,其中包含广州市板块地图。
python for ArcGIS 绘制广州市板块地图
- 原数据
- 完整代码
- 代码解读
利用python的arcpy模块绘制出广州市板块地图如下
原数据
原始数据格式如下
完整代码
# -*- coding: utf-8 -*-"""
Project_name:drawing plate for guangzhou
@author: 帅帅de三叔
Created on Tue Nov 19 16:29:03 2019
"""
import sys
arcpy_path = [r'D:\Python27\ArcGIS10.6\Lib\site-packages',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\arcpy',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\bin',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\ArcToolbox\Scripts']
sys.path.extend(arcpy_path)
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys) #通过import引用进来时,setdefaultencoding函数在被系统调用后被删除了,所以必须reload一次
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
sys.setdefaultencoding('utf-8')
import arcpy #导入地理处理模块
from arcpy import env #导入环境类
env.workspace=r"D:\python for ArcGIS\绘制广州板块"
env.overwriteOutput=True #是否开启复写
import pandas as pd #导入数据分析模块
plate_data=pd.read_excel(u"广州板块.xlsx",encoding='utf8') #读取板块数据
rows,cols=plate_data.shape #数据框尺寸
lng_lat=plate_data[u'板块经纬度'] #经纬度数据
plate_name=plate_data[u'板块名称'] #板块名称
#factoryCode = arcpy.GetParameterAsText(4490) #WGS_1984_World_Mercator投影坐标系工厂代码4490,3395
#spatial_ref = arcpy.SpatialReference(factoryCode) #设置空间参考参数
spatial_ref = arcpy.SpatialReference('China Geodetic Coordinate System 2000') #China Geodetic Coordinate System 2000 or WGS 1984 World Mercator
polygonPoints=arcpy.Array() #用来存放构成多边形的折点
polygonGeometryList=[] #用来存放多边形几何对象组
for row in range(0,rows): #按行循环
points=lng_lat[row].split(";") #折点
for spot in points:
xy=spot.split(",") #折点经纬度
point=arcpy.Point() #几何对象,用来存放折点对象
point.id=row;point.X=float(xy[0]);point.Y=float(xy[1]) #转为点对象
polygonPoints.add(point) #构成一串折点
#print(point.id)
polygon=arcpy.Polygon(polygonPoints,spatial_ref,"","") #利用折点构造多边形带空间参考
polygonGeometryList.append(polygon) #把多边形追加到数组
polygonPoints.removeAll() #移除折点
result=arcpy.CopyFeatures_management(polygonGeometryList,r"D:\python for ArcGIS\绘制广州板块\plate_guangzhou.shp","POLYGON")
代码解读
整个实现过程包括3步
读数,即读取板块边界经纬度数据
拆点,即采用split()函数将经纬度数据分割,构成折点
连线,即将折点连起来形成封闭多边形,即板块
若还有不明白的,可以来三行科创微信公众号交流群。
本文共计969个文字,预计阅读时间需要4分钟。
使用Python和ArcPy模块绘制广州市板块地图:
数据:- 原始数据:广州市行政区划数据- 数据格式:Shapefile
完整代码:
pythonimport arcpy
设置工作环境arcpy.env.workspace=path_to_your_directory
输入参数input_layer=input_shapefile.shpoutput_layer=output_shapefile.shp
创建新的Shapefilearcpy.CreateFeatureclass_management(arcpy.env.workspace, output_layer, POLYGON)
添加字段arcpy.AddField_management(output_layer, NAME, TEXT)
添加要素with arcpy.da.InsertCursor(output_layer, [SHAPE@, NAME]) as cursor: with arcpy.da.SearchCursor(input_layer, [SHAPE@, NAME]) as search_cursor: for row in search_cursor: cursor.insertRow([row[0], row[1]])
绘制地图arcpy.management.AddLayer(output_layer, Map)
保存并关闭arcpy.management.SaveACopy(output_layer, output_shapefile_copy.shp)
代码解读:
1. 导入ArcPy模块。
2.设置工作环境。
3.输入参数:输入图层和输出图层。
4.创建新的Shapefile并添加字段。
5.添加要素:遍历输入图层中的每个要素,并将其添加到输出图层中。
6.添加图层到地图中。
7.保存并关闭。
使用方法:
1. 将上述代码保存为`.py`文件。
2.将输入数据(Shapefile)和代码文件放在同一目录下。
3.在命令行中运行代码文件:`python your_script_name.py`
4.代码将创建一个新的Shapefile,其中包含广州市板块地图。
python for ArcGIS 绘制广州市板块地图
- 原数据
- 完整代码
- 代码解读
利用python的arcpy模块绘制出广州市板块地图如下
原数据
原始数据格式如下
完整代码
# -*- coding: utf-8 -*-"""
Project_name:drawing plate for guangzhou
@author: 帅帅de三叔
Created on Tue Nov 19 16:29:03 2019
"""
import sys
arcpy_path = [r'D:\Python27\ArcGIS10.6\Lib\site-packages',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\arcpy',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\bin',
r'D:\Program Files (x86)\ArcGIS\Desktop10.6\ArcToolbox\Scripts']
sys.path.extend(arcpy_path)
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys) #通过import引用进来时,setdefaultencoding函数在被系统调用后被删除了,所以必须reload一次
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
sys.setdefaultencoding('utf-8')
import arcpy #导入地理处理模块
from arcpy import env #导入环境类
env.workspace=r"D:\python for ArcGIS\绘制广州板块"
env.overwriteOutput=True #是否开启复写
import pandas as pd #导入数据分析模块
plate_data=pd.read_excel(u"广州板块.xlsx",encoding='utf8') #读取板块数据
rows,cols=plate_data.shape #数据框尺寸
lng_lat=plate_data[u'板块经纬度'] #经纬度数据
plate_name=plate_data[u'板块名称'] #板块名称
#factoryCode = arcpy.GetParameterAsText(4490) #WGS_1984_World_Mercator投影坐标系工厂代码4490,3395
#spatial_ref = arcpy.SpatialReference(factoryCode) #设置空间参考参数
spatial_ref = arcpy.SpatialReference('China Geodetic Coordinate System 2000') #China Geodetic Coordinate System 2000 or WGS 1984 World Mercator
polygonPoints=arcpy.Array() #用来存放构成多边形的折点
polygonGeometryList=[] #用来存放多边形几何对象组
for row in range(0,rows): #按行循环
points=lng_lat[row].split(";") #折点
for spot in points:
xy=spot.split(",") #折点经纬度
point=arcpy.Point() #几何对象,用来存放折点对象
point.id=row;point.X=float(xy[0]);point.Y=float(xy[1]) #转为点对象
polygonPoints.add(point) #构成一串折点
#print(point.id)
polygon=arcpy.Polygon(polygonPoints,spatial_ref,"","") #利用折点构造多边形带空间参考
polygonGeometryList.append(polygon) #把多边形追加到数组
polygonPoints.removeAll() #移除折点
result=arcpy.CopyFeatures_management(polygonGeometryList,r"D:\python for ArcGIS\绘制广州板块\plate_guangzhou.shp","POLYGON")
代码解读
整个实现过程包括3步
读数,即读取板块边界经纬度数据
拆点,即采用split()函数将经纬度数据分割,构成折点
连线,即将折点连起来形成封闭多边形,即板块
若还有不明白的,可以来三行科创微信公众号交流群。

