모양 파일을 jpeg 또는 다른 일반적인 이미지 형식으로 일괄 변환하는 방법을 아는 사람이 있습니까?
편집 : 각 셰이프 파일에 스타일을 적용하고 해당 스타일의 셰이프 파일을 이미지로 내보내고 싶습니다.
예를 들어, 카운티에 인구 조사 지역이 있고 각 지역의 이미지를 강조 표시하고 다른 지역은 모두 같은 색상을 원합니다.
모양 파일을 jpeg 또는 다른 일반적인 이미지 형식으로 일괄 변환하는 방법을 아는 사람이 있습니까?
편집 : 각 셰이프 파일에 스타일을 적용하고 해당 스타일의 셰이프 파일을 이미지로 내보내고 싶습니다.
예를 들어, 카운티에 인구 조사 지역이 있고 각 지역의 이미지를 강조 표시하고 다른 지역은 모두 같은 색상을 원합니다.
답변:
다음과 같은 많은 무료 도구가 있습니다.
그러나 파이썬에서 참조는 Mapnik 및 파이썬에서 시작하기입니다.
Mapniks Maps 의 예제를 참조하십시오
TM_WORLD_BORDERS-0.3.shp의 단순 렌더링 이미지
shapefile에서 국가 (앙골라) 선택 :
Mapniks Maps의 다른 예
모든 레이어를 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 창을 열고 다음을 입력하는 것에 부끄러워하지 마십시오.
# 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 경험 이었으므로 더 우아한 방법이있을 것입니다.
여기 내가 사용하는 파이썬 스크립트가 있습니다. 다각형의 색상을 변경하기 위해 수정 될 수 있습니다. & 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)
대신 shp 파일을 ArcMaps에로드하고 원하는대로 구성하십시오. 그런 다음 Alt + Print Screen 또는 Snipping Tool을 사용하여 스크린 샷을 만드십시오. 그러면 셰이프 파일이 렌더링 된 것과 정확히 같은 jpg 또는 png가 생깁니다.