利用python的arcpy模塊繪製出武漢市板塊地圖如下
原數據
完整代碼
# -*- coding: utf-8 -*-
"""
Project_name:drawing plate for Chengdu
@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_Wuhan.shp","POLYGON")
代碼解讀
整個實現過程包括3步
讀數,即讀取板塊邊界經緯度數據
拆點,即採用split()函數將經緯度數據分割,構成折點
連線,即將折點連起來形成封閉多邊形,即板塊
若還有不明白的,可以來“三行科創”微信公衆號交流羣。
1,python for ArcGIS 繪製上海市板塊地圖
2,python for ArcGIS 繪製上海市環線地圖
3,python for ArcGIS 繪製北京市板塊地圖
4,python for ArcGIS 繪製廣州市板塊地圖
5,python for ArcGIS 繪製深圳市板塊地圖
6,python for ArcGIS 繪製成都市板塊地圖