답변:
사람들이 갑자기 파이썬의 힘을 발견 한 것처럼 (이상하게는 하나의 파이썬 모듈 인 ArcPy없이) 파이썬에서 shapefile 시각화 질문을 참조하십시오 .
모든 (Pysal과 매끈한 ...)을 결합하여 다른 Scientific 모듈과 혼합 할 수 있습니다.
따라서 Python Script 예제의 경우 gis.stackexchange 또는 인터넷 (영어뿐만 아니라 많은 예제) 에서 Pyshp Fiona, ogr, gdal 또는 shapely를 검색하십시오 (영어뿐만 아니라 많은 예제).
프랑스어로 된 하나 (스크립트와 그림은 보편적입니다!)
- 파이썬 : GIS 소프트웨어없이 벡터와 지질 학적 관점에서 래스터 레이어를 사용하여
영어로 기타 :
- 파이썬, 매끈한, 피오나와 GIS
와 스페인어
- 정점의 좌표를 사용하여 불규칙한 다각형의 영역의 결정
gis.stackexchange의를
- 고도 프로필 10km는 라인의 각면
- 업데이트 Pyshp를 사용하여 속성
- 어떻게 래스터에서의 3D Shape 파일을 만드는 방법?
- 두 점 사이의 고도 차이를 얻는 Python 스크립트
-등
Aaron이 제시 한 스크립트는 Python 사전 만 사용하는 Fiona로 더 간단하게 작성할 수 있습니다.
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')
또한 두 권의 책이 있습니다 :
Eric Westra의 Python 지리 공간 개발 .
Joel Lawhead의 Python 으로 지리 공간 분석 학습
Python은 또한 QGIS (Quantum GIS), GRASS GIS, gvSIG 또는 OpenJump와 같은 다른 GIS 응용 프로그램 또는 Paraview (및 Blender 와 같은 !) 와 같은 3D 모델러에서 스크립팅 언어로 사용됩니다 . 또한 이러한 모든 응용 프로그램에서 대부분의 지리 공간 모듈을 사용할 수 있습니다 ( Blendar를 사용하여 QGIS 데이터 시각화 참조 )
오픈 소스 GIS 를 사용하여 Python으로 USU 사이트 지오 프로세싱 을 시작 하는 것이 좋습니다 . 그들은 주로 연습을 통해 GDAL / OGR 라이브러리를 사용합니다. GDAL / OGR을 설치하는 것은 다소 어려운 일일 수 있으므로이 블로그 항목이 도움이 될 수 있습니다 . Windows에 Python 용 GDAL (및 OGR) 설치 . 또한 GIS.SE 에서 Arcpy 사용 에 대한 대안을 확인하십시오.
USU 사이트에서 제공되는 다음 오픈 소스 지오 프로세싱 스크립트 예제는 속성 데이터를 추출하여 텍스트 파일에 쓰는 데 사용됩니다.
# import modules
import ogr, os, sys
# set the working directory
os.chdir('f:/data/classes/python/data')
# open the output text file for writing
file = open('hw1a.txt', 'w')
# get the shapefile driver
driver = ogr.GetDriverByName('ESRI Shapefile')
# open the data source
datasource = driver.Open('sites.shp', 0)
if datasource is None:
print 'Could not open file'
sys.exit(1)
# get the data layer
layer = datasource.GetLayer()
# loop through the features in the layer
feature = layer.GetNextFeature()
while feature:
# get the attributes
id = feature.GetFieldAsString('id')
cover = feature.GetFieldAsString('cover')
# get the x,y coordinates for the point
geom = feature.GetGeometryRef()
x = str(geom.GetX())
y = str(geom.GetY())
# write info out to the text file
file.write(id + ' ' + x + ' ' + y + ' ' + cover + '\n')
# destroy the feature and get a new one
feature.Destroy()
feature = layer.GetNextFeature()
# close the data source and text file
datasource.Destroy()
file.close()
.Destroy
멋진 방법 이름입니다 : p
GDAL / OGR에 관심이있을 수 있습니다 .
GDAL은 래스터 처리에 사용되고 OGR은 벡터에 사용됩니다. 둘 다 오픈 소스 라이브러리입니다.
ArcPy에 대한 일부 종속성을 제거하려는 경우 정보를 배열로 읽고 순수 Python에서 자체 계산을 실행하여 일부 기능을 모방 할 수 있습니다.
여기에 표시된 것처럼 최근 다각형에서 점을 선택 하여이 작업을 수행 했습니다 . 폴리곤 정점의 좌표를 고려할 때 광선 캐스팅 알고리즘을 사용하여 점이 다각형 내에 있는지 확인합니다.
나는 이것을 개인적으로 사용한 적이 없지만 사무실의 다른 사람들은 매끈하게 사용하는 것을 좋아합니다 : https://pypi.python.org/pypi/Shapely