SHPからJPGの作成を自動化する


14

誰もがシェープファイルをJPEGまたは別の一般的な画像形式にバッチ変換する方法を知っていますか?

編集:各シェープファイルにスタイリングを適用し、そのスタイリングを含むシェープファイルを画像にエクスポートすることを明確にする必要がありました。

たとえば、郡に国勢調査地区があり、個々の地区の画像を強調表示し、他の地区はすべて同じ色にする必要があります。


特定のソフトウェアを念頭に置いていますか?定期的に使用するアプリケーションですか?それとも、あなたはどんな方法でも可能ですか?
RyanKDalton

私はかなり定期的にアークとQを使用し、arcpyに精通取得していますが、実際にはこれを行うにはどのような方法を探しています、でも他のサードパーティ製のソフトウェアパッケージ
camdenl

2
したがって、明確にするために、基本的には、シェープファイルのサムネイル(またはそれ以上)を生成するだけで、スタイリング、色、ラベルなどはありませんか?
RyanKDalton

私は昨夜このことについて考え始めました、そして私の最初の質問は誤解を招くかもしれないことがわかります。スタイリングを適用し、スタイリングが適用された個々のシェープファイルごとにマップを100回以上エクスポートします。
カムデン

回答:


14

次のような多くの無料ツールがあります。

ただし、Pythonの場合、参照はMapnikおよびPython入門です

  • マップを作成します(ピクセル単位の幅と高さ、背景色など)
  • データのレンダリング方法を決定するスタイルを作成します
  • データソース(シェープファイルなど)を追加し、そこからレイヤーを作成します。
  • 地図をレンダリングします
  • 同じマップとスタイルのパラメーターを複数のファイルに適用できます(XMLファイル経由)

Mapniks Mapsの例を参照してください

TM_WORLD_BORDERS-0.3.shpからの単純なレンダリング画像

ここに画像の説明を入力してください

シェイプファイル内の国(アンゴラ)の選択:

ここに画像の説明を入力してください

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

ああ、昨日これをモンタナ州の郡でやった!答えるには遅すぎますか?すでに国勢調査地区ごとにシェープファイルを作成するためにSplitを使用していると仮定すると、グループレイヤーでそれらを処理するのは簡単(怠laz)であることがわかりました。それがドキュメント内の唯一のグループレイヤーであると仮定して、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の経験であったため、これを行うためのよりエレガントな方法があると確信しています。


まったく同じことをしたのですか?応答してくれてありがとう
-camdenl

1

これが私が使用しているPythonスクリプトです。ポリゴンの色を変更するように変更できます。&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.