জেপিজি তৈরিতে স্বয়ংক্রিয়ভাবে এসএইচপি করুন


14

ব্যাচটি শেফফিলকে জেপিজ বা অন্য একটি সাধারণ চিত্র ফর্ম্যাটে রূপান্তর করার উপায় কি কেউ জানেন?

সম্পাদনা: আমার স্পষ্ট করে দেওয়া উচিত ছিল যে আমি প্রতিটি শেফফাইলে একটি স্টাইলিং প্রয়োগ করতে চাই এবং তারপরে একটি চিত্রটিতে স্টাইলিং সহ শেফফিলটি রফতানি করতে চাই।

উদাহরণস্বরূপ, আমার একটি কাউন্টিতে সেন্সাস ট্র্যাক্ট রয়েছে এবং আমি প্রতিটি পৃথক ট্র্যাক্টের চিত্র হাইলাইট করতে চাই যেখানে অন্য ট্র্যাক্টগুলি একই রঙের হয়।


আপনার মনে কি কোনও বিশেষ সফ্টওয়্যার আছে? আপনি নিয়মিত ব্যবহার করেন এমন একটি অ্যাপ্লিকেশন? বা আপনি কি কোনও উপায় সম্ভব?
রায়ানকডালটন

আমি নিয়মিত অর্ক এবং কি ব্যবহার করি এবং আরকপির সাথে আরও পরিচিত হয়ে উঠছি, তবে সত্যিই এটি করার জন্য কোনও উপায় অনুসন্ধান করছি, এমনকি অন্য একটি তৃতীয় পক্ষের সফ্টওয়্যার প্যাকেজ
ক্যামডেনল

2
স্পষ্টতার জন্য, আপনি মূলত কেবল শেফফিলের থাম্বনেইল (বা আরও বড়), কোনও স্টাইলিং, কোনও রঙ, কোনও লেবেল, ইত্যাদি উত্পন্ন করার সন্ধান করছেন?
রায়ানকডালটন

আমি গত রাতে এই সম্পর্কে ভাবতে শুরু করেছি এবং আমি দেখছি যে আমার মূল প্রশ্নটি বিভ্রান্তিকর হতে পারে। আমি একটি স্টাইলিং প্রয়োগ করতে এবং তারপরে প্রয়োগকৃত স্টাইলিং সহ প্রতিটি ইন্ডিভিউয়াল শেফফিলের জন্য 100+ বারের বেশি মানচিত্র রফতানি করতে চাই।
ক্যামডেনল

উত্তর:


14

অনেকগুলি নিখরচায় সরঞ্জাম রয়েছে:

কিন্তু পাইথনে, রেফারেন্সটি ম্যাপনিক এবং গেমিং স্টার্ট ইন ইন পাইথন

  • আপনি একটি মানচিত্র তৈরি করুন (পিক্সেলগুলির প্রস্থ এবং উচ্চতা, পটভূমির রঙ ইত্যাদি)
  • আপনি স্টাইল তৈরি করেন যা ডেটা রেন্ডার হয় তা নির্ধারণ করে
  • আপনি একটি ডেটাসোর্স যুক্ত করুন (শেফফাইল ইত্যাদি) এবং এটি থেকে একটি স্তর তৈরি করুন।
  • আপনি মানচিত্রটি রেন্ডার করুন
  • একই মানচিত্র এবং শৈলীর পরামিতি একাধিক ফাইলগুলিতে প্রয়োগ করা যেতে পারে (একটি এক্সএমএল ফাইলের মাধ্যমে)

ম্যাপনিক্স মানচিত্রে উদাহরণগুলি দেখুন

TM_WORLD_BORDERS-0.3.shp থেকে সাধারণ রেন্ডার করা চিত্রগুলি

এখানে চিত্র বর্ণনা লিখুন

শেফফাইলে একটি দেশের (অ্যাঙ্গোলা) নির্বাচন:

এখানে চিত্র বর্ণনা লিখুন

ম্যাপনিক্স মানচিত্রের আর একটি উদাহরণ

এখানে চিত্র বর্ণনা লিখুন


4

আপনি সমস্ত স্তরকে একটি এমএক্সডিতে যুক্ত করতে পারেন, তারপরে লুপ করে চালাতে পারেন

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

অনুরূপ এই প্রশ্নের উত্তর রয়েছে যা 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

জেপিজিতে রফতানি একই রকম, তবে জেপিজি কিন্ডা ইয়াকি। এটি আমার প্রথম আরকিপাইয়ের অভিজ্ঞতা ছিল, তাই আমি নিশ্চিত যে এটি করার জন্য আরও মার্জিত উপায় রয়েছে।


তুমি ঠিক একই কাজটি করেছ? খুশী হয়ে আপনি এটি বের করেছেন, প্রতিক্রিয়াটির জন্য ধন্যবাদ
ক্যামডেনল

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 + মুদ্রণ স্ক্রিন বা স্নিপিং সরঞ্জামটি ব্যবহার করুন। তারপরে আপনার কাছে একটি জেপিজি বা পিএনজি থাকবে যা দেখতে আকৃতির ফাইলটিকে কীভাবে রেন্ডার করা হয়েছিল ঠিক তার মতোই।


3
আমি মনে করি না যে এই প্রশ্নের মূল উপাদানটিকে সম্বোধন করে যা কীভাবে প্রক্রিয়াটি স্বয়ংক্রিয় করতে হয়।
রায়ানকডাল্টন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.