python for 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()函數將經緯度數據分割,構成折點
連線,即將折點連起來形成封閉多邊形,即板塊

若還有不明白的,可以來三行科創微信公衆號交流羣。

延申閱讀
1,python for ArcGIS 繪製上海市板塊地圖
2,python for ArcGIS 繪製上海市環線地圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章