আরকিপি ব্যবহারের বিকল্প


69

আমি কার্যত আমার অজগর সমস্ত জিওপ্রসেসিংয়ের জন্য ইএসআরআই এর আরকি সাইট প্যাকেজটি ব্যবহার করব বলে মনে হচ্ছে। ইএসআরআইয়ের কৃতিত্বের জন্য, এগুলি সরঞ্জামগুলির একটি অবিশ্বাস্য স্যুট যা একটি দুর্দান্ত কাজ সম্পাদন করতে সহায়তা করতে পারে। তবে, আমি ইএসআরআই আরকিপি ডোমেনের বাইরে জিওপ্রসেসিং স্ক্রিপ্ট তৈরি করতে চাই। উদাহরণস্বরূপ, যদি আমি কোনও বহুগুণে কোনও রাস্টার ক্লিপ করতে চান তবে আমি ESRI থেকে নিম্নলিখিত স্ক্রিপ্ট দিয়ে শুরু করব :

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)

# Save the output 
outExtractByMask.save("C:/sapyexamples/output/extractmask")  

আমি নিশ্চিত না যে আমি কীভাবে আরকিপি ছাড়াই প্রোগ্রামটিমেটিকভাবে একই কাজটি সম্পাদন করব। গুরুতর প্রোগ্রামারদের জন্য আমার প্রশ্নগুলি এখানে রয়েছে: ইএসআরআই ব্যবহারকারীরা আরকিপি সাইট প্যাকেজটি সম্পাদন করতে পারে এমন কাজগুলি সম্পাদন করতে আপনি অজগর সরঞ্জামগুলির কোন সংগ্রহ ব্যবহার করেন? আমি কোথা থেকে শুরু করব?


উত্তর:


45

জিডিএল হ'ল ব্যবহারের সরঞ্জাম। আসলে পুরো কলটি জিডাল_রেস্টেরাইজের জন্য একটি লাইন:

gdal_rasterize -l mask -i -burn -9999 mask.shp elevation.tif

যদি আপনি ডেমের কোনও ডেটা মান জানতেন

কিছু অজগর নিয়ন্ত্রণের জন্য:

lyr = 'mask'
shp = 'mask.shp'
dem = 'elevation.tif'
ndv = -9999
p = os.Popen('gdal_rasterize -l %s -i -burn %d %s %s' % (lyr,ndv,shp,dem)

যেখানে আপনার পরিবর্তনশীল অজগর সেট করা যেতে পারে

পূর্ণ অজগর জন্য:

from osgeo import gdal, ogr
from osgeo.gdalconst import *
shp = ogr.Open('mask.shp')
lyr = shp.GetLayer('mask')
dem = gdal.Open('elevation.tif', GA_Update)
ndv = dem.GetRasterBand(1).GetNoDataValue()
gdal.RasterizeLayer(dem, 1, lyr, None, ndv) # other options, such as transformer func, creation options...
dem = None

আমি কেবল সি এপিআই-এর সিনট্যাক্সে একটি দ্রুত উঁকি দিয়েছি, তাই পাইথনের জন্য আমার বাক্য গঠনটি সম্ভবত কিছুটা বন্ধ। Gdal_alg.h: http://gdal.org/gdal__alg_8h.html দেখুন


29

20

একটি ভাল শুরুর পয়েন্ট হ'ল জিওপ্যাটিয়াল ডেটা অ্যাবস্ট্রাকশন লাইব্রেরি । এটি আসলে দুটি লাইব্রেরি দ্বারা গঠিত - জিওপ্যাটিয়াল রেস্টার ডেটা ম্যানিপুলেট করার জন্য জিডিএল এবং জিওপ্যাটিয়াল ভেক্টরের ডেটা ম্যানিপুলেট করার জন্য ওজিআর কিন্তু লোকেরা সাধারণত একে জিডিএল বলে।

ইউটা স্টেট ইউনিভার্সিটিতে ওপেন সোর্স জিআইএস কোর্স ব্যবহার করে পাইথনের একটি ভূ-প্রসেসিং রয়েছে । আপনি এটিও পরীক্ষা করে দেখতে চাইতে পারেন।


20

আমার প্রচুর একাডেমিক গবেষণায় আমি জিডমরফোলজির জন্য পৃষ্ঠ বিশ্লেষণ করে লিডার ডেটা নিয়ে কাজ করি। আমি দ্রুত আবিষ্কার করেছি যে আরকিপি ব্যবহার করে প্রচুর অপারেশন করা খুব ধীর ছিল, বিশেষত বড় ডেটাসেটগুলিতে। ফলস্বরূপ আমি ব্যবহার করতে শুরু করেছি:

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


16

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

অবশ্যই এই দুর্দান্ত লিঙ্কটি পরীক্ষা করে দেখুন যা আপ টু ডেট (আমি বিশ্বাস করি): http://grass.osgeo.org/wiki/GRASS_and_Python

সম্পাদনা: ইএসআরআই-এর পটভূমিতে যাদের জন্য অন্য লিঙ্ক: http://grass.osgeo.org/wiki/GRASS_migration_hints

আমি জিডিএল এর গতি দ্বিতীয়। এটি অমূল্য এবং আমি তা ছাড়া হারিয়ে যাব।


1
গ্রাস জিআইএস New-তে নতুন: পাইগ্রাস, ইন.ইউনটিএন.ইটি
জাজবেলি /


16

আমি মনে করি এখন পর্যন্ত দেওয়া উত্তরগুলি মূলত সমস্ত প্যাকেজটি উল্লেখযোগ্যভাবে কভার করেছে (বিশেষত জিডিএল, ওজিআর, পাইশপ, নুমপি)

তবে জিআইএস এবং পাইথন সফটওয়্যার ল্যাবরেটরিও রয়েছে , এটি বেশ কয়েকটি আকর্ষণীয় মডিউল ধারণ করে। তারা হ'ল:

  • ফিওনা : ওজিআর এর neater API
  • আর্ট্রি : পাইথন জিআইএসের জন্য স্থানিক সূচক
  • শেপলি : কার্টেসিয়ান বিমানের বৈশিষ্ট্য বিশ্লেষণ ও বিশ্লেষণের জন্য পাইথন প্যাকেজ

ব্যক্তিগতভাবে আমি ইদানীং জিডিএল / ওজিআর এর সাথে খেলতে শুরু করেছি এবং বিশ্লেষণ সরঞ্জামগুলির গতি এবং কভারেজের বিষয়ে তাদের খুব চিত্তাকর্ষক বলেছি।

পদ্ধতিগুলি কীভাবে ব্যবহার করবেন তার কয়েকটি উদাহরণ (এই দুর্দান্ত উত্স থেকে নেওয়া যা একটি খুব ভাল সূচনা পয়েন্ট):

# To select by attribute:
.SetAttributeFilter("soil = 'clay'")

# To select by location, either:
.SetSpatialFilter(<geom>)   

# or
.SetSpatialFilterRect(<minx>, <miny>, <maxx>, <maxy>)

# DataSource objects have a method `ExecuteSQL(<SQL>)`
.ExecuteSQL("SELECT* FROM sites WHERE soil = 'clay' ORDER BY id DESC")


# Plus all the well known tools, like:

# intersect
poly2.Intersect(<geom_1>)

# disjoint?
<geom>.Disjoint(geom_1)

# touches (on the edge?)
<geom>.Touches(geom_1)

# cross each other?
<geom>.Crosses(geom_1)

# within?
<geom>.Within(geom_1)

#contains?
<geom>.Contains(ptB)

# overlaps?
<geom>.Overlaps(geom_1)

## geoprecessing
<geom>.Union(<geom_1>)
<geom>.Intersection(<geom_1>)
<geom>.Difference(<geom_1>)
<geom>.SymmetricDifference(<geom_1>)

# Buffer (returns a new geometry)
<geom>.Buffer(<distance>)

# Are the geometries equal?
<geom1>.Equal(<geom2>)

# Returns the shortest distance between the two geometries
<geom1>.Distance(<geom2>)

# Returns the geometry's extent as a list (minx, maxx, miny, maxy)
<geom>.GetEnvelope()

এই সরঞ্জামগুলির সম্পর্কে দুর্দান্ত জিনিস হ'ল এগুলি কীভাবে কার্যকর করা যায় সে সম্পর্কে আপনি খুব নমনীয়। CreateGeometry()স্ক্র্যাচ থেকে ভেক্টর ফাইলগুলি সহজেই তৈরি করতে আমি নিজের ক্লাসটি উদাহরণ হিসাবে লিখেছিলাম । আপনার আগ্রহী হলে আমি এটি এখানে পোস্ট করতে পারি, যদিও আমি মনে করি এটি প্রশ্নের ক্ষেত্রের বাইরে।


10

আমি জানি আপনার প্রশ্নটি পাইথন-কেন্দ্রিক, তবে আর এর রয়েছে মূল্যবান পরিসংখ্যান বিশ্লেষণ পদ্ধতি, যার মধ্যে কয়েকটি স্থানিক বিশ্লেষণের জন্য ব্যবহার করা যেতে পারে। @Whuberএখানে একটি উত্তরের উত্তর দেওয়া আছে যাতে কীভাবে একটি বাক্সে দুটি রেখায় রাস্টার ক্লিপ করা যায়।


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

6

আমার সমাধান, দ্রুত সমাধান হ'ল পাইথনের সাথে জিডিএল ব্যবহার করা।

তোমার দরকার

সাবপ্রসেস আমদানি করুন

কমান্ড = "জিডিএলওয়ার্ফ-জিটিফ--কুটলাইন ক্লিপআরিয়া.এসপিপিএইচপিএইচএলএফ_এইন্টেস্ট-ক্রপ_ টু_কুটলাইন ইন ডেটা.অ্যাসাক আউট ডেটা.টিফ"

subprocess.call ([ 'সি: \ টেম্প \ এবিসি \ notepad.exe'])

(উত্তর থেকে এখানে: জিডিএল ব্যবহার করে ভেক্টর স্তর সহ ক্লিপিং রাস্টার )

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


4

আপনি যদি পোস্টজিআইএস চালাতে আপত্তি করেন না তবে এটি আপনার জন্য সবচেয়ে স্থানিক ডেটা প্রক্রিয়াকরণ করতে পারে।

পিডিএফ চিটশিট:

http://www.postgis.us/downloads/postgis20_cheatsheet.pdf

এটি পাইথনের সাথে সংহত করে:

https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python

কোয়ান্টাম জিআইএস বা পিজিএডমিনের মধ্যে এসপিআইটি-র মত সহায়ক সরঞ্জামগুলির সাহায্যে আপনি পোস্টজিআইএস স্থাপন করতে ভাল সজ্জিত। তারপরে আপনি আপনার স্থানিক ডেটাতে অজগর নিয়ন্ত্রণ পোস্টজিআইএস অপারেশন ব্যবহার করতে পারেন।


3

আমি হোয়াইটবক্সটুলস নামে একটি ওপেন-সোর্স জিওপ্রসেসিং লাইব্রেরিতে কাজ করছি যা অনেক অ্যাপ্লিকেশনে আরকিপির জায়গায় ব্যবহার করা যেতে পারে। বর্তমানে রাস্টার, ভেক্টর এবং লিডার (এলএএস) ডেটা প্রসেসিংয়ের জন্য প্রায় 300 টি সরঞ্জাম উপলব্ধ রয়েছে , যদিও হোয়াইটবক্স গ্যাটে উপলব্ধ 400+ টি সামগ্রীর মধ্যে শেষ পর্যন্ত পোর্ট করার পরিকল্পনা রয়েছে । যদিও রাস্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ (দক্ষতার জন্য) ব্যবহার করে সরঞ্জামগুলি বিকাশ করা হয়েছে, তবে প্রতিটি সরঞ্জাম পাইথন থেকে কলযোগ্য, নিম্নলিখিত উদাহরণ হিসাবে:

from whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()

# Set the working directory. This is the path to the folder containing the data,
# i.e. files sent to tools as input/output parameters. You don't need to set
# the working directory if you specify full path names as tool parameters.
wbt.work_dir = "/path/to/data/"

# The most convenient way to run a tool is to use its associated method, e.g.:
wbt.elev_percentile("DEM.tif", "output.tif", 15, 15)

# You may also provide an optional custom callback for processing output from the
# tool. If you don't provide a callback, and verbose is set to True, tool output
# will simply be printed to the standard output.
def my_callback(value):
    if user_selected_cancel_btn: # Assumes a 'Cancel' button on a GUI
        print('Cancelling operation...')
        wbt.cancel_op = True
    else:
        print(value)

wbt.breach_depressions('DEM.flt', 'DEM_breached.flt', callback=my_callback)

# List all available tools in WhiteboxTools
print(wbt.list_tools())

# Lists tools with 'lidar' or 'LAS' in tool name or description.
print(wbt.list_tools(['lidar', 'LAS']))

# Print the help for a specific tool.
print(wbt.tool_help("ElevPercentile"))

# Want to read the source code for a tool?
# 'view_code' opens a browser and navigates to a tool's  
# source code in the WhiteboxTools GitHub repository
wbt.view_code('watershed')

হোয়াইটবক্সটুল ব্যবহারকারী ম্যানুয়ালটিতে আরও বিশদ তথ্য সরবরাহ করা যেতে পারে । লাইব্রেরিটি একা একা এবং অন্য কোনও নির্ভরতা নেই। আপনাকে কেবল এখানে অবস্থিত ছোট (<5Mb) ফাইলটি ডাউনলোড করতে হবে । ডাউনলোড ফাইলটিতে হোয়াইটবক্সটুলস এক্সপি, হোয়াইটবক্স_টুলসপি স্ক্রিপ্ট রয়েছে যা লাইব্রেরির জন্য পাইথন এপিআই সরবরাহ করে (উপরের স্ক্রিপ্টের উপরের লাইনে আমদানি করা) এবং ব্যবহারকারী ম্যানুয়াল। লাইব্রেরির সাথে ইন্টারফেস করার জন্য একটি খুব বেসিক টিকিন্টার জিইউআই (wb_runner.py) রয়েছে।

অনুমতিপ্রাপ্ত এমআইটি লাইসেন্সটি হ'ল হোয়াইটবক্সটুলগুলিকে অন্যান্য ওপেন সোর্স জিআইএসের সাথে ব্যাক-এন্ড হিসাবে সংহত করার অনুমতি দেওয়ার উদ্দেশ্যে; আলেকজান্ডার ব্রুই হোয়াইটবক্সটুলস ব্যাক-এন্ডের জন্য একটি QGIS প্লাগইন তৈরি করেছেন । আপনি প্রয়োজন অনুযায়ী একক স্ক্রিপ্টে হোয়াইটবক্সটুলস এবং আরকপাইয়ের সরঞ্জামগুলি মিশ্রিত করতে এবং ম্যাচ করতে পারেন। গ্রন্থাগারটি এখনও কিছুটা পরীক্ষামূলক, যা ইউনিভার্সিটি অফ গেল্ফের জিওমোরফোমেট্রি অ্যান্ড হাইড্রোজোমেটিক্স রিসার্চ গ্রুপ থেকে উদ্ভাবিত , বর্তমানে প্রকাশিত -১.০ প্রকাশিত, যা ব্যবহারে বিবেচনায় নেওয়া উচিত।


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