SHP를 JPG 생성으로 자동화


14

모양 파일을 jpeg 또는 다른 일반적인 이미지 형식으로 일괄 변환하는 방법을 아는 사람이 있습니까?

편집 : 각 셰이프 파일에 스타일을 적용하고 해당 스타일의 셰이프 파일을 이미지로 내보내고 싶습니다.

예를 들어, 카운티에 인구 조사 지역이 있고 각 지역의 이미지를 강조 표시하고 다른 지역은 모두 같은 색상을 원합니다.


특정 소프트웨어를 염두에두고 있습니까? 정기적으로 사용하는 응용 프로그램? 아니면 가능한 방법이 있습니까?
RyanKDalton

나는 꽤 정기적으로 아크와 Q를 사용하고 arcpy에 익숙해지고,하지만 정말 심지어 제 3자가 소프트웨어 패키지이 작업을 수행 할 수있는 방법을 찾고 있어요
camdenl

2
명확하게하기 위해 기본적으로 모양 파일의 축소판 (또는 더 큰), 스타일링, 색상 없음, 레이블 없음 등을 생성하려고합니까?
RyanKDalton

나는 지난 밤에 이것에 대해 생각하기 시작했고, 나의 원래 질문이 오도 될 수 있다는 것을 알았습니다. 스타일을 적용한 다음 개별 스타일 파일마다 적용된 스타일을 사용하여 맵을 100 회 이상 내 보냅니다.
camdenl

답변:


14

다음과 같은 많은 무료 도구가 있습니다.

그러나 파이썬에서 참조는 Mapnik파이썬에서 시작하기입니다.

  • 지도를 만듭니다 (너비 및 높이 (픽셀), 배경색 등)
  • 데이터 렌더링 방법을 결정하는 스타일을 만듭니다.
  • 데이터 소스 (셰이프 파일 등)를 추가하고 그로부터 레이어를 만듭니다.
  • 당신은지도를 렌더링
  • 동일한 맵 및 스타일 매개 변수를 XML 파일을 통해 여러 파일에 적용 할 수 있습니다.

Mapniks Maps 의 예제를 참조하십시오

TM_WORLD_BORDERS-0.3.shp의 단순 렌더링 이미지

여기에 이미지 설명을 입력하십시오

shapefile에서 국가 (앙골라) 선택 :

여기에 이미지 설명을 입력하십시오

Mapniks Maps의 다른 예

여기에 이미지 설명을 입력하십시오


4

모든 레이어를 mxd에 추가 한 다음 반복하여 실행할 수 있습니다.

arcpy.mapping.ExportToJPEG(map_document, out_jpeg, {data_frame}, {df_export_width}, {df_export_height}, {resolution}, {world_file}, {color_mode}, {jpeg_quality}, {progressive})

맵의 각 레이어에 대해


이 솔루션에 추가하기 위해 arcpy.da.walk를 사용하여 입력 데이터의 초기 목록을 생성 할 수 있습니다. resources.arcgis.com/en/help/main/10.1/index.html#//…
scw

3

비슷한 질문 에는 FME 를 사용 하여 DWG를 JPG로 변환 하는 답변이 있습니다 . 모양 파일 변환 프로세스도 비슷합니다.

이 예제 에는 다운로드 할 수있는 예제 작업 공간이 있습니다.

FME는 배치 프로세스 처리에 매우 적합합니다. 예를 들어, 리더를 폴더로 지정하면 폴더에 모든 모양 파일이 포함됩니다.

폴더의 모든 셰이프 파일을 읽고 별도의 JPG에 쓰는 간단한 워크 플로를 만들었습니다.

워크 플로우


3

오, 나는 어제 몬태나의 카운티에서 이것을했다! 대답하기에는 너무 늦습니까? 분할을 사용하여 각 인구 조사 기관에 대한 쉐이프 파일을 만들었다 고 가정하면 그룹 레이어에서 처리하기가 쉬워졌습니다. 그것이 문서의 유일한 그룹 레이어라고 가정하면 ArcPy 창을 열고 다음을 입력하는 것에 부끄러워하지 마십시오.

# Setup, defining a variable for the map document, the data frame,
# and a list of layers:
mxd = arcpy.mapping.MapDocument("Current")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
layers = arcpy.mapping.ListLayers(mxd)

# To copy symbology to all subLayers in the group layer,
# using a template, any normal polygon shapefile will do:
# (datum conflict warnings are irrelevant)
for layer in layers:
  if layer.isGroupLayer:
    for subLayer in layer:
      arcpy.ApplySymbologyFromLayer_management(subLayer, "templatelayer")

# Export one map with each county/tract highlighted, toggling visibility
# of each sublayer before and after:
for layer in layers:
  if layer.isGroupLayer:
    for subLayer in layer:
      print "Exporting " + str(subLayer.name)
      subLayer.visible = True
      slfile = "C:\\YourPathHere\\Subdir\\Etc\\" + str(subLayer.name) +
".png"
      arcpy.mapping.ExportToPNG(mxd, slfile, df, df_export_width=640,
df_export_height=480, transparent_color="255, 255, 255")
      subLayer.visible = False

jpg로 내보내기는 비슷하지만 jpg는 다소 유감입니다. 이것이 나의 첫 ArcPy 경험 이었으므로 더 우아한 방법이있을 것입니다.


당신도 똑같은 일을 했습니까? 답장을
보내

1

여기 내가 사용하는 파이썬 스크립트가 있습니다. 다각형의 색상을 변경하기 위해 수정 될 수 있습니다. & c :

#!/usr/bin/env python3
from descartes import PolygonPatch
import matplotlib.pyplot as plt 
import random
import shapefile
import sys

def get_cmap(n, name='hsv'):
  '''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct 
  RGB color; the keyword argument name must be a standard mpl colormap name.'''
  return plt.cm.get_cmap(name, n)

if len(sys.argv)!=3:
  print("Syntax: {0} <Shapefile> <Output>".format(sys.argv[0]))
  sys.exit(-1)

shapefile_name = sys.argv[1]
outputfile     = sys.argv[2]

polys  = shapefile.Reader(shapefile_name)
shapes = polys.shapes()
cmap   = get_cmap(len(shapes))

#Enable to randomize colours
#random.shuffle(shapes)

fig = plt.figure()
ax  = fig.add_axes((0,0,1,1)) 

for i,poly in enumerate(shapes):
  poly  = poly.__geo_interface__
  color = cmap(i)
  ax.add_patch(PolygonPatch(poly, fc=None, ec="black", alpha=1, zorder=2))

ax.axis('scaled')
ax.set_axis_off()
plt.savefig(outputfile, bbox_inches='tight', pad_inches=0)

-1

대신 shp 파일을 ArcMaps에로드하고 원하는대로 구성하십시오. 그런 다음 Alt + Print Screen 또는 Snipping Tool을 사용하여 스크린 샷을 만드십시오. 그러면 셰이프 파일이 렌더링 된 것과 정확히 같은 jpg 또는 png가 생깁니다.


3
나는 그것이 프로세스 를 자동화 하는 방법 인 질문의 핵심 구성 요소를 다루지 않는다고 생각합니다 .
RyanKDalton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.