เป็นเรื่องที่แปลกราวกับว่าผู้คนค้นพบพลังของ Python (โดยไม่ต้องใช้ ArcPy ซึ่งเป็นเพียงโมดูล Python เพียงอันเดียว) ดูตัวอย่างของคำถามVisualize shapefile ใน Python :
- การประมวลผลเชิงพื้นที่ใน Python มีประวัติยาวนานมากเก่ากว่า Arcpy (หรือ arcgisscripting) -> ไม่มี "เลียนแบบ" ขีดความสามารถของ ArcPy ที่นี่ตามที่ Paul กล่าวส่วนใหญ่เคยมีมาก่อน ArcPy แล้ว
- การอ้างอิงสำหรับโมดูล Python คือPython Package Index ( Pypi ) และมีส่วนเฉพาะ: หัวข้อ :: วิทยาศาสตร์ / วิศวกรรม :: GIS
- คุณสามารถทำอะไรกับโมดูลเหล่านี้และมันก็มักจะง่ายกว่าและเร็วกว่า ArcPy เพราะมันเป็น Python แท้ๆ (ไม่มีเคอร์เซอร์ ... )
- หุ่นดีเป็นหนึ่งในโมดูลเหล่านี้สำหรับการประมวลผลรูปทรงเรขาคณิตเชิงพื้นที่ -> คำนวณพื้นที่ของรูปหลายเหลี่ยมและแปลงรูปหลายเหลี่ยมเป็นจุด ..
- หากคุณต้องการประมวลผลเลเยอร์เวกเตอร์มีosgeo / ogr , FionaหรือPyshp (และอื่น ๆ ที่ใช้น้อยกว่า) -> สอบถาม shapefile โดยแอตทริบิวต์สร้างเลเยอร์ใหม่จากการเลือกคำนวณเลเยอร์ใหม่จากการเลือกคำนวณพื้นที่ของรูปหลายเหลี่ยม
- สำหรับการประมวลผล rasters มาตรฐานคือosgeo / gdal
- สำหรับการวิเคราะห์เชิงพื้นที่มีPysal
- สำหรับ 3D คุณสามารถใช้โมดูลวิทยาศาสตร์อื่น ๆ เช่นnumpyหรือscipy (อัลกอริทึม 3D, กริด แต่ยังรวมถึงสถิติ, ภูมิศาสตร์, 2D หรือ 3D)
- และฉันไม่ได้พูดถึงmapnik , matplotlib / basemap , Geodjangoและ ...
คุณสามารถรวมทั้งหมด (Pysal กับหุ่นดี, ... ) และผสมกับโมดูลวิทยาศาสตร์อื่น ๆ
ดังนั้นสำหรับตัวอย่างของ Python Script ให้ค้นหา Pyshp Fiona, ogr, gdal หรือ shapely ใน gis.stackexchange หรืออินเทอร์เน็ต (ตัวอย่างมากมายไม่เพียง แต่เป็นภาษาอังกฤษ)
หนึ่งในนั้นเป็นภาษาฝรั่งเศส (สคริปต์และตัวเลขเป็นสากล!):
- Python: การใช้เวกเตอร์และเลเยอร์แรสเตอร์ในมุมมองทางธรณีวิทยาโดยไม่มีซอฟต์แวร์ GIS
เป็นภาษาอังกฤษ:
- GIS ด้วย Python, Shapely, และ Fiona
และภาษาสเปน
- การกำหนดพื้นที่ของรูปหลายเหลี่ยมผิดปกติโดยใช้พิกัดของจุดยอด
ใน gis.stackexchange
- โปรไฟล์ระดับความสูง 10 กม. ในแต่ละด้านของบรรทัด
- อัปเดตคุณสมบัติโดยใช้ Pyshp
- วิธีสร้างรูปร่าง3D จากแรสเตอร์
- Python Script สำหรับรับความแตกต่างของระดับความสูงระหว่างสองจุด
- ฯลฯ
สคริปต์ที่นำเสนอโดย Aaron สามารถเขียนได้ง่ายขึ้นด้วย Fiona ซึ่งใช้พจนานุกรม Python เท่านั้น:
import fiona
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(point['geometry']['coordinates'][0])
y = str(point['geometry']['coordinates'][21])
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
และถ้าคุณใช้หุ่นดีนอกจากนี้:
from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(shape(pt['geometry']).x)
y = str(shape(pt['geometry']).y)
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
นอกจากนี้ยังมีหนังสือสองเล่ม:
Python การพัฒนาเชิงพื้นที่ของ Eric Westra
การเรียนรู้การวิเคราะห์เชิงพื้นที่ด้วย Pythonของ Joel Lawhead
Python ยังใช้เป็นภาษาสคริปต์ในแอปพลิเคชั่น GIS อื่น ๆ เช่น QGIS (Quantum GIS), GRASS GIS, gvSIG หรือ OpenJump หรือผู้สร้างโมเดล 3D เช่นParaview (และBlenderด้วย!) และคุณสามารถใช้โมดูล geospatial ส่วนใหญ่ในแอปพลิเคชันเหล่านี้ทั้งหมด (ดูการแสดงข้อมูล QGIS ด้วย Blender )