如何使用Python和ArcGIS绘制北京板块地图?

2026-05-26 19:141阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计876个文字,预计阅读时间需要4分钟。

如何使用Python和ArcGIS绘制北京板块地图?

使用Python for ArcGIS 绘制北京市民宿地图,结果预览如下:

pythonimport arcpy

输入参数input_folder=C:/path/to/input/folderoutput_map=C:/path/to/output/map

创建地图map_document=arcpy.mapping.MapDocument(in_memory, new_map)

添加地图框架frame=arcpy.mapping.Layer(input_folder + /Beijing_Frames.shp)arcpy.mapping.AddLayer(map_document, frame, AUTO_ARRANGE)

添加市民宿图层hostel_layer=arcpy.mapping.Layer(input_folder + /Beijing_Hostels.shp)arcpy.mapping.AddLayer(map_document, hostel_layer, AUTO_ARRANGE)

设置地图map_document.title=北京市民宿地图

保存地图arcpy.mapping.SaveToMap(map_document, output_map)

关闭地图文档map_document.close()

代码解读:

1.导入arcpy模块。

2.设置输入文件夹和输出地图路径。

3.创建一个新的地图文档。

4.添加地图框架图层。

5.添加市民宿图层。

6.设置地图。

7.保存地图文档。

8.关闭地图文档。


如何使用Python和ArcGIS绘制北京板块地图?


python for ArcGIS 绘制北京市板块地图

  • ​​结果预览​​
  • ​​数据​​
  • ​​完整代码​​
  • ​​代码解读​​

需要利用python的arcpy模块绘制出北京市板块地图如下

结果预览

数据

原始板块边界数据如下

完整代码

# -*- coding: utf-8 -*-
"""
Project_name:drawing plate for shanghai
@author: 帅帅de三叔
Created on Wed Oct 30 15:16:44 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") #读取板块数据
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(",") #折点经纬度
if len(xy)==2:
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_beijing.shp","POLYGON")

代码解读

整个实现过程包括3步

读数,即读取板块边界经纬度数据

拆点,即采用split()函数将经纬度数据分割,构成折点

连线,即将折点连起来形成封闭多边形,即板块

若还有不明白的,可以来三行科创微信公众号交流群。




本文共计876个文字,预计阅读时间需要4分钟。

如何使用Python和ArcGIS绘制北京板块地图?

使用Python for ArcGIS 绘制北京市民宿地图,结果预览如下:

pythonimport arcpy

输入参数input_folder=C:/path/to/input/folderoutput_map=C:/path/to/output/map

创建地图map_document=arcpy.mapping.MapDocument(in_memory, new_map)

添加地图框架frame=arcpy.mapping.Layer(input_folder + /Beijing_Frames.shp)arcpy.mapping.AddLayer(map_document, frame, AUTO_ARRANGE)

添加市民宿图层hostel_layer=arcpy.mapping.Layer(input_folder + /Beijing_Hostels.shp)arcpy.mapping.AddLayer(map_document, hostel_layer, AUTO_ARRANGE)

设置地图map_document.title=北京市民宿地图

保存地图arcpy.mapping.SaveToMap(map_document, output_map)

关闭地图文档map_document.close()

代码解读:

1.导入arcpy模块。

2.设置输入文件夹和输出地图路径。

3.创建一个新的地图文档。

4.添加地图框架图层。

5.添加市民宿图层。

6.设置地图。

7.保存地图文档。

8.关闭地图文档。


如何使用Python和ArcGIS绘制北京板块地图?


python for ArcGIS 绘制北京市板块地图

  • ​​结果预览​​
  • ​​数据​​
  • ​​完整代码​​
  • ​​代码解读​​

需要利用python的arcpy模块绘制出北京市板块地图如下

结果预览

数据

原始板块边界数据如下

完整代码

# -*- coding: utf-8 -*-
"""
Project_name:drawing plate for shanghai
@author: 帅帅de三叔
Created on Wed Oct 30 15:16:44 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") #读取板块数据
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(",") #折点经纬度
if len(xy)==2:
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_beijing.shp","POLYGON")

代码解读

整个实现过程包括3步

读数,即读取板块边界经纬度数据

拆点,即采用split()函数将经纬度数据分割,构成折点

连线,即将折点连起来形成封闭多边形,即板块

若还有不明白的,可以来三行科创微信公众号交流群。