python for ArcGIS 繪製武漢市板塊地圖

python for ArcGIS 繪製武漢市板塊地圖

利用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 繪製成都市板塊地圖

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