আরকিপি ব্যবহার না করে শেফফাইলগুলি জিওপ্রসেসিংয়ের জন্য পাইথন স্ক্রিপ্টের উদাহরণ


33

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

অন্য পাইথন মডিউল বা লাইব্রেরি ব্যবহারের যে কোনও কোডের উদাহরণ রয়েছে? আমি আরকিপি ব্যবহার করে সহজেই এটি করতে সক্ষম তবে আমি অন্যান্য বিকল্পগুলি অন্বেষণ করতে চাই।


জিওপ্যান্ডাস ভেক্টর ফাইলগুলির জন্য আপনার বন্ধু। রাস্টার জন্য রাস্টারিও।
RutgerH

উত্তর:


54

এটি আশ্চর্যজনক, যেন মানুষ হঠাৎ পাইথনের শক্তি আবিষ্কার করেছিল (আরকিপাই ছাড়াই যা অন্যদের মধ্যে কেবল একটি পাইথন মডিউল), উদাহরণস্বরূপ পাইথনের ভিজ্যুয়ালাইজ শেফফাইল প্রশ্নটি দেখুন :

  • পাইথনের জিওপ্যাটিয়াল প্রসেসিংয়ের একটি দীর্ঘ ইতিহাস রয়েছে, এটি আর্পির (বা অর্কিগিসিপিটিং) এর চেয়ে অনেক পুরানো -> এখানে আর্কপির ক্ষমতা "নকল" করা হয়নি, যেমন পল বলেছেন, বেশিরভাগ ইতিমধ্যে আরকিপির আগে সেখানে ছিল।
  • পাইথন মডিউলগুলির জন্য উল্লেখটি পাইথন প্যাকেজ সূচক ( পাইপি ) এবং সেখানে একটি উত্সর্গীকৃত বিভাগ রয়েছে: বিষয় :: বৈজ্ঞানিক / প্রকৌশল :: জিআইএস
  • আপনি এই মডিউলগুলি দিয়ে যে কোনও কিছু করতে পারেন এবং এটি আর্কপাইয়ের চেয়ে প্রায়শই সহজ এবং দ্রুত হয় কারণ এটি খাঁটি পাইথন (কোনও কার্সার নেই ...)।
  • সুষম ভূস্থানিক জ্যামিতি প্রক্রিয়াকরণের জন্য এই মডিউল অন্যতম -> পয়েন্ট একটি বহুভুজ এবং ধর্মান্তরিত বহুভুজের ক্যালকুলেট এলাকায় ..
  • আপনি যদি ভেক্টর স্তরগুলি প্রসেস করতে চান তবে সেখানে ওজেও / ওজিআর , ফিয়োনা বা পাইশপ (এবং অন্যরা কম ব্যবহৃত হয়) -> বৈশিষ্ট্য অনুসারে একটি শেফফাইল অনুসন্ধান করুন, নির্বাচন থেকে নতুন স্তর তৈরি করুন, বহুভুজের ক্ষেত্রগুলি গণনা করুন, বহুভুজকে বিন্দুতে রূপান্তর করুন
  • রাস্টারদের প্রক্রিয়াজাতকরণের জন্য, মানটি হচ্ছে ওজেজিও / জিডিএল
  • স্থানিক বিশ্লেষণের জন্য, পাইসাল রয়েছে
  • 3 ডি-এর জন্য, আপনি অন্যান্য বৈজ্ঞানিক মডিউলগুলি যেমন নমপি বা স্কিপি ব্যবহার করতে পারেন (3 ডি অ্যালগরিদম, গ্রিডগুলি, তবে পরিসংখ্যান, জিওস্ট্যাটিস্টিক্স, 2 ডি বা 3 ডি)
  • আমি সম্পর্কে কথা বলবেন না mapnik , matplotlib / basemap , Geodjango এবং ...

আপনি সমস্তকে মিশ্রিত করতে পারেন (পিসালকে সুদৃ .়, ...) এবং অন্যান্য বৈজ্ঞানিক মডিউলগুলির সাথে এগুলি মিশ্রিত করতে পারেন।

এইভাবে পাইথন স্ক্রিপ্ট উদাহরণগুলির জন্য, পাইশপ ফিওনা, ওজিআর, জিডাল বা সুদৃশ্য gis.stackexchange বা ইন্টারনেট (অনেক উদাহরণ, কেবল ইংরেজীতে নয়) অনুসন্ধান করুন)
তাদের মধ্যে একটি ফ্রেঞ্চ (লিপি এবং চিত্রগুলি সর্বজনীন!):
- পাইথন: জিআইএস সফটওয়্যার ছাড়াই ভেক্টর এবং ভূতাত্ত্বিক দৃষ্টিকোণ রাস্টার স্তর ব্যবহার
ইংরেজিতে অন্য:
- পাইথন, সুষম, এবং Fiona, সঙ্গে জিআইএস
এবং স্প্যানিশ ভাষায়
- ছেদচিহ্ন এর কোঅর্ডিনেটগুলি দিয়ে অনিয়মিত বহুভুজের এলাকার সংকল্প
gis.stackexchange মধ্যে
- লাইনের প্রতিটি লাইনের প্রতিটি প্রান্ত 10 কিলোমিটার প্রোফাইল
- পাইশপ ব্যবহার করে বৈশিষ্ট্য আপডেট করা
- কিভাবে একজন রাস্টার থেকে 3 ডি শেফফাইল তৈরি করবেন?
- দুটি পয়েন্টের মধ্যে উন্নয়নের পার্থক্য পাওয়ার জন্য পাইথন স্ক্রিপ্ট
- ইত্যাদি

হারুনের উপস্থাপিত লিপিটি ফায়োনার সাথে আরও সহজভাবে লেখা যেতে পারে যা কেবল পাইথন অভিধান ব্যবহার করে:

import fiona
with fiona.open('sites.shp', 'r') as input:
    with open('hw1a.txt', 'w') as output:
       for pt in input:
           id = pt['properties']['id']
           cover = pt['properties']['cover']
           x = str(point['geometry']['coordinates'][0])
           y = str(point['geometry']['coordinates'][21])
           output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')

এবং আপনি যদি অতিরিক্তভাবে সুন্দর ব্যবহার করেন:

from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
    with open('hw1a.txt', 'w') as output:
       for pt in input:
           id = pt['properties']['id']
           cover = pt['properties']['cover']
           x = str(shape(pt['geometry']).x)
           y = str(shape(pt['geometry']).y)
           output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')

দুটি বইও রয়েছে:

এরিক ওয়েস্ট্রার পাইথন জিওপ্যাটিয়াল বিকাশ

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

জোল ল্যাডহেডের পাইথনের সাথে জিওপ্যাসিয়াল বিশ্লেষণ শেখা

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

পাইথন অন্যান্য জিআইএস অ্যাপ্লিকেশন যেমন কিউজিআইএস (কোয়ান্টাম জিআইএস), গ্রাস জিআইএস, জিভিএসআইজি বা ওপেনজাম্প বা প্যারাভিউ (এবং ব্লেন্ডার এছাড়াও!) এর মতো 3 ডি মডেলারের ক্ষেত্রে স্ক্রিপ্টিং ভাষা হিসাবে ব্যবহৃত হয় । এবং আপনি এই সমস্ত অ্যাপ্লিকেশনটিতে জিওসিপ্যাটিয়াল মডিউলগুলির বেশিরভাগটি ব্যবহার করতে পারেন ( ব্লেন্ডারের সাথে কিউজিআইএস ডেটা ভিজ্যুয়ালাইজিং দেখুন )


আপনি যে কথা বলছেন তার এই পাইথন স্টাফটি কী;)
নাথান ডাব্লু

ফিওনা উইন্ডোজে একটি ডিএলএল ত্রুটি ফেলছে বলে মনে হচ্ছে।
মাল্টিগডোভার্স

ফিওনা ইনস্টল করলেন কীভাবে? আমার কোনও সমস্যা নেই
জিন

19

আপনাকে আরম্ভ করার জন্য ওপেন সোর্স জিআইএস ব্যবহার করে পাইথনের সাথে ইউএসইউ সাইট জিওপ্রসেসিংয়ের আমি উচ্চ প্রস্তাব দিচ্ছি । তারা প্রাথমিকভাবে অনুশীলন জুড়ে GDAL / OGR লাইব্রেরি ব্যবহার করে। জিডিএল / ওজিআর ইনস্টল করা কিছুটা চ্যালেঞ্জ হতে পারে, সুতরাং এই ব্লগ এন্ট্রিটি আপনার পক্ষে সহায়ক হতে পারে: উইন্ডোজটিতে পাইথনের জন্য জিডিএল (এবং ওজিআর) ইনস্টল করা । এছাড়াও চেক আউট Arcpy ব্যবহার করে বিকল্প GIS.SE. উপর

নীচের ওপেনসোর্স জিওপ্রসেসিং স্ক্রিপ্ট উদাহরণ (ইউএসইউ সাইট থেকে) অ্যাট্রিবিউট ডেটা বের করতে এবং এটি একটি পাঠ্য ফাইলে লিখতে ব্যবহৃত হয়:

# import modules
import ogr, os, sys

# set the working directory
os.chdir('f:/data/classes/python/data')

# open the output text file for writing
file = open('hw1a.txt', 'w')

# get the shapefile driver
driver = ogr.GetDriverByName('ESRI Shapefile')

# open the data source
datasource = driver.Open('sites.shp', 0)
if datasource is None:
  print 'Could not open file'
  sys.exit(1)

# get the data layer
layer = datasource.GetLayer()

# loop through the features in the layer
feature = layer.GetNextFeature()
while feature:

  # get the attributes
  id = feature.GetFieldAsString('id')
  cover = feature.GetFieldAsString('cover')

  # get the x,y coordinates for the point
  geom = feature.GetGeometryRef()
  x = str(geom.GetX())
  y = str(geom.GetY())

  # write info out to the text file
  file.write(id + ' ' + x + ' ' + y + ' ' + cover + '\n')

  # destroy the feature and get a new one
  feature.Destroy()
  feature = layer.GetNextFeature()

# close the data source and text file
datasource.Destroy()
file.close()

4
.Destroyএকটি দুর্দান্ত পদ্ধতির নাম: পি
জেসন

5

আপনি জিডিএল / ওজিআর সম্পর্কে আগ্রহী হতে পারেন ।

জিডিএল ভ্যাক্টরদের জন্য প্রক্রিয়াকরণ রাস্টারগুলিতে ব্যবহৃত হয় এবং ওজিআর ব্যবহার করা হয়। দুটোই ওপেন সোর্স লাইব্রেরি।

আপনি যদি আরকিপির উপর কিছু নির্ভরতা অপসারণের সন্ধান করছেন, আপনি কোনও অ্যারেতে তথ্য পড়ে এবং খাঁটি পাইথনে নিজের গণনা চালিয়ে কিছু ক্ষমতা নকল করতে পারেন।

আমি সম্প্রতি এখানে দেখা হিসাবে বহুভুজের মধ্যে পয়েন্ট নির্বাচন করে এটি করেছি । বহুভুজের কোণটিকে স্থানাঙ্ক প্রদান করে একটি বিন্দু বহুভুজের মধ্যে রয়েছে কিনা তা নির্ধারণ করতে এটি রে কাস্টিং অ্যালগরিদম ব্যবহার করে।


1
দয়া করে সমাধানটির সংক্ষিপ্ত পরিমাণটি অন্তর্ভুক্ত করুন পৃষ্ঠাটি দেখার এবং পড়তে যাওয়ার আগে উপলব্ধি করা যায় এবং বোঝা যায়। সময়ে সেই পৃষ্ঠাটি সম্ভবত এই ঠিকানায় থাকবে না যে এই উত্তরটি খুব কার্যকর নয় nd :)
ম্যাট উইলকি

1

আমি এটি ব্যক্তিগতভাবে কখনও ব্যবহার করি নি, তবে অফিসের অন্যরা সুদৃ use়ভাবে ব্যবহার করতে পছন্দ করেন: https://pypi.python.org/pypi/Shapely


কোনও সুযোগে আপনি কিছু নমুনা কোড সুদৃশ্য ব্যবহার করে পোস্ট করতে পারেন?
শেরপাস


5
কেবলমাত্র লিঙ্কের উত্তরগুলি দীর্ঘমেয়াদে সহায়ক নয়, কারণ এগুলি অনিবার্যভাবে ভেঙে যায়। দয়া করে গন্তব্য সম্পর্কে পর্যাপ্ত তথ্য অন্তর্ভুক্ত করুন যে ক) এটির নতুন বাড়িটি পুনরায় আবিষ্কার করা যেতে পারে, এবং খ) পৃষ্ঠাটি পরিদর্শন ও পড়তে যাওয়ার আগে সমাধানের সারাংশটি উপলব্ধি করা যায় এবং বোঝা যায়।
ম্যাট উইলকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.