python 은 arcpy.mapping 모듈 을 사용 하여 그림 을 대량으로 출력 합 니 다.

3534 단어 대량python
그림 을 내 는 것 은 프로젝트 에서 흔히 볼 수 있 는 임무 이 고,어떤 항목 은 심지어 백 장의 그림 을 필요 로 하기 때문에 대량으로 출토 하 는 도구 가 필요 하 다.arcpy.mapping 은 ArcGIS 의 그림 모듈 로 그림 도 구 를 빠르게 완성 할 수 있 습 니 다.
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'
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기