python 은 arcpy.mapping 모듈 을 사용 하여 그림 을 대량으로 출력 합 니 다.
arcpy.mapping 모듈 에서 자주 사용 하 는 종 류 는 MapDocument,DataFrame,Layer,DataDrivenPages 와 TextElement 입 니 다.
MapDocument 류 는 지도 문서(mxd 파일)에 대응 하 는 클래스 입 니 다.초기 화 매개 변 수 는 문자열 입 니 다.보통.mxd 파일 의 경로 입 니 다.
mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")
DataFrame 클래스 는 지도 에 있 는 Data Frame(즉,아래 그림 의 Layers)을 조작 하 는 데 사용 되 며 지도의 범위,비례 자 등 을 제어 할 수 있 습 니 다.arcpy.mapping.ListDataFrames(mapdocument,{wildcard})함수 가 져 옵 니 다.
df= arcpy.mapping.ListDataFrames(mxd)[0]
Layer 류 는 구체 적 인 그림 층 을 조작 하 는 데 사 용 됩 니 다.반점 을 제어 할 수 있 는 스타일,가시 성 등..lyr 파일 의 경로 로 초기 화 할 수도 있 고,arcpy.mapping.ListLayers(mapdocument_or_layer, {wildcard}, {data_프레임})함수 가 져 오기.
lyr1=arcpy.mapping.Layer(r" F:\GeoData\ChinaArea\Province.lyr")
df.addLayer(lyr1)
lyr2=arcpy.mapping.ListLayer(mxd,"",df)[0]
DataDrivenPages 클래스 는 ArcMap 의 Data Driven Pages 도구 에 맞 춰 사용 해 야 합 니 다.벡터 파일 에 있 는 모든 그림 이나 일부 그림 의 반점 이 그림 한 장 씩 나 오 는 경우 에 사용 합 니 다.TextElement 류 는 그림 이름,페이지 등 지도 상의 문 자 를 조작 하 는 데 사 용 됩 니 다.arcpy.mapping.ListLayoutElements(mapdocument, {element_type:},{wildcard})함수 가 져 옵 니 다.
txtElm=arcpy.mapping.ListLayoutElements(mxd,"TEXT_ELEMENT")[0]
흔히 볼 수 있 는 그림 모드 는 두 가지 가 있 습 니 다.하나의 벡터 파일 에 그림 이 한 장 씩 얼룩 지고 한 폴 더 아래 의 모든 벡터 파일 에 그림 이 한 장 씩 나 옵 니 다.그림 마다 한 장의 그림 을 반점 으로 나타 낸다.
이 경우 Data Driven Pages 도구 가 가장 잘 어 울 립 니 다.ArcMap 의 Customize->Toolbars->Data Driven 페이지 를 열 고 그림,이름 필드,정렬 필드,표시 범위 와 비례 자 를 설정 하여 지 도 를 저장 합 니 다.
# coding:utf-8
import arcpy
mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")
for pageNum in range(1,mxd.dataDrivenPages.pageCount):
mxd.dataDrivenPages.currentPageID=pageNum
mapName=mxd.dataDrivenPages.pageRow.getValue(mxd.dataDrivenPages.pageNameField.name)
print mapName
arcpy.mapping.ExportToPNG(mxd,r"F:\GeoData\ChinaArea\Province\\"+mapName+".png")
print 'ok'
폴 더 아래 벡터 파일 마다 그림 을 보 여 줍 니 다:
# coding:utf-8
import arcpy
import os
def GetShpfiles(shpdir):
shpfiles=[]
allfiles=os.listdir(shpdir)
for file in allfiles:
if os.path.isfile(file):
if file.endswith('.shp'):
shpfiles.append(file)
else:
shpfiles.extend(GetShpfiles(file))
return shpfiles
allshps=GetShpfiles(r"F:\GeoData\ChinaArea\Province")
mxd=arcpy.mapping.MapDocument(r"F:\GeoData\ChinaArea\ChinaVector.mxd")
lyr=arcpy.mapping.ListLayer(mxd)[0]
for shp in allshps:
paths=os.path.split(shp)
print paths[1]
lyr.replaceDataSource(paths[0],"SHAPEFILE_WORKSPACE",paths[1])
arcpy.mapping.ExportToPNG(mxd,r"F:\GeoData\ChinaArea\Province\\"+paths[1]+".png")
print 'ok'
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PostgreSQL에서 대량 데이터 가져오기 성능을 향상시키는 n가지 방법키워드: 대량 데이터 가져오기, 데이터 로드, 대량 삽입, 가속, 속도 향상 다원화된 선택 시대, 인생에서 많은 것들이 그렇고 모든 일에는 변함없는 방식과 방법이 없다.흰 고양이든 검은 고양이든 쥐를 잡을 수 있는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.