स्वचालित SHP को JPG निर्माण के लिए


14

क्या किसी को बैच को आकार बदलने के लिए jpegs या किसी अन्य सामान्य छवि प्रारूप में बदलने का तरीका पता है?

संपादित करें: मुझे स्पष्ट करना चाहिए कि मैं प्रत्येक आकृति के लिए एक स्टाइल लागू करना चाहता हूं, और फिर उस स्टाइल के साथ आकृति को एक छवि में निर्यात कर सकता हूं।

उदाहरण के लिए, मेरे पास एक काउंटी में जनगणना पथ है, और मैं चाहता हूं कि प्रत्येक व्यक्तिगत पथ की एक छवि पर प्रकाश डाला जाए जबकि अन्य ट्रैक्ट सभी समान रंग के हों।


क्या आपके पास कोई विशेष सॉफ्टवेयर है? एक आवेदन जो आप नियमित रूप से उपयोग करते हैं? या क्या आप किसी भी तरह से संभव हैं?
रयानकेडलटन

मैं नियमित रूप से आर्क और क्यू का उपयोग करता हूं और आर्कपी से अधिक परिचित हूं, लेकिन मैं वास्तव में ऐसा करने के लिए किसी भी तरह की तलाश कर रहा हूं, यहां तक ​​कि एक और तीसरे पक्ष के सॉफ्टवेयर पैकेज
कैमडेन

2
स्पष्टीकरण के लिए, आप मूल रूप से आकृति के थंबनेल (या बड़े) उत्पन्न करने के लिए देख रहे हैं, कोई स्टाइल नहीं, कोई रंग नहीं, कोई लेबल नहीं, आदि सही है?
रयानकैल्टन

मैंने कल रात इस बारे में सोचना शुरू किया, और मैंने देखा कि मेरा मूल प्रश्न भ्रामक हो सकता है। मैं एक स्टाइल लागू करना चाहूंगा और फिर लागू स्टाइल के साथ प्रत्येक इंडिविजुअल शेपफाइल के लिए 100+ से अधिक बार मानचित्र निर्यात करूंगा।
कैमडेन

जवाबों:


14

कई मुफ्त उपकरण हैं जैसे:

लेकिन पायथन में, संदर्भ मेक्निक है और पायथन में शुरू हो रहा है

  • आप एक नक्शा बनाते हैं (पिक्सेल में चौड़ाई, ऊंचाई, पृष्ठभूमि का रंग इत्यादि)
  • आप शैलियाँ बनाते हैं जो निर्धारित करती है कि डेटा कैसे प्रस्तुत किया गया है
  • आप एक डेटा स्रोत (आकार-प्रकार, आदि) जोड़ते हैं और उससे एक परत बनाते हैं।
  • आप मानचित्र प्रस्तुत करते हैं
  • एक ही नक्शे और शैलियों के मापदंडों को कई फ़ाइलों (एक XML फ़ाइल के माध्यम से) पर लागू किया जा सकता है

Mapniks मैप्स में उदाहरण देखें

TM_WORLD_BORDERS-0.3.shp से सरल रेंडर की गई छवियां

यहाँ छवि विवरण दर्ज करें

आकार में देश (अंगोला) का चयन:

यहाँ छवि विवरण दर्ज करें

Mapniks मैप्स का एक और उदाहरण

यहाँ छवि विवरण दर्ज करें


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 का उपयोग कर सकते हैं: resource.arcgis.com/en/help/main/10.1/index.html#//…
scw

3

यह समान प्रश्न के जवाब का उपयोग करने वाले है एफएमई JPG में DWG कन्वर्ट करने के लिए। आकृति को परिवर्तित करने के लिए प्रक्रिया समान होगी।

इस उदाहरण में उदाहरण कार्यस्थान हैं जिन्हें आप डाउनलोड कर सकते हैं।

FME बैच प्रक्रियाओं को संभालने के लिए अच्छी तरह से अनुकूल है। उदाहरण के लिए, आप रीडर को किसी फ़ोल्डर में इंगित कर सकते हैं और इसमें फ़ोल्डर में सभी शेपफाइल्स शामिल होंगे।

मैंने एक साधारण वर्कफ़्लो बनाया जो सभी शेपफाइल्स को एक फ़ोल्डर में पढ़ता है और जेपीजी को अलग करने के लिए उन्हें लिखता है।

कार्यप्रवाह


3

ओह, मैंने कल मोंटाना में काउंटियों के साथ यह किया! क्या जवाब देने में बहुत देर हो चुकी है? यह मानकर कि आपने प्रत्येक जनगणना पथ के लिए एक आकृति बनाने के लिए स्प्लिट का उपयोग किया है, मैंने पाया कि समूह परत में उन्हें संभालना आसान (आलसी) था। यह मानते हुए कि आपके दस्तावेज़ में एकमात्र ग्रुप लेयर है, आर्कपी विंडो खोलने और प्रवेश करने में संकोच न करें:

# 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 के लिए निर्यात समान है, लेकिन jpgs थोड़े yucky हैं। यह मेरा पहला आर्कपी अनुभव था, इसलिए मुझे यकीन है कि ऐसा करने के लिए अधिक सुरुचिपूर्ण तरीके हैं।


आपने ठीक वही काम किया है एह? खुशी है कि आप इसे समझ गए, प्रतिक्रिया के लिए धन्यवाद
कैमडेन

1

यहाँ एक पायथन लिपि का उपयोग किया गया है। यह बहुभुज का रंग बदलने के लिए संशोधित किया जा सकता है, और सी:

#!/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 फ़ाइल को आर्कमैप्स में लोड करें और इसे कॉन्फ़िगर करें कि आप कैसे पसंद करते हैं। फिर स्क्रीनशॉट लेने के लिए Alt + Print Screen या Snipping Tool का उपयोग करें। फिर आपके पास एक jpg या png होगा, जो बिल्कुल वैसा ही दिखता है, जैसे शेप फ़ाइल को कैसे प्रस्तुत किया गया था।


3
मुझे नहीं लगता कि यह प्रश्न के प्रमुख घटक को संबोधित करता है कि प्रक्रिया को कैसे स्वचालित किया जाए।
रियानकैल्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.