আর্কপি ব্যবহার করে অনুমিত বিন্দুর অক্ষাংশ এবং দ্রাঘিমাংশ পাচ্ছেন? [বন্ধ]


13

আমার কাছে একটি বৈশিষ্ট্য শ্রেণিতে একটি পয়েন্ট বৈশিষ্ট্য রয়েছে যা আর্কপাই দ্বারা অ্যাক্সেস করা হচ্ছে। বিন্দুটি অনুমান করা হয়েছে তবে এই বিন্দুর জন্য অপ্রকল্পিত অক্ষাংশ এবং দ্রাঘিমাংশ পাওয়ার জন্য আমার একটি কার্যকর উপায়ের সন্ধান করতে হবে।

নতুন পদ্ধতি ফিচার ক্লাসে সার্চ কার্সার পাওয়া, ফিচারটি সন্ধান করা, তারপরে ফিচারটির আকৃতি থেকে দূরে / দীর্ঘস্থায়ী হওয়া ছাড়া কি অন্য কোনও পদ্ধতি আছে?

উত্তর:


6

সার্চকার্সার একটি স্থানিক রেফারেন্স নির্দিষ্ট করে সমর্থন করে - এই ক্ষেত্রে, আপনি একটি ভৌগলিক সমন্বয় ব্যবস্থা যেমন ডাব্লুজিএস 1984 চান। তবে আপনি কার্সারটি দিয়ে পুনরাবৃত্তি করবেন এবং আকৃতিটি থেকে এক্স & ওয়াকে ধরবেন, এখানে দেখুন


6

যখন আর্কজিআইএস 10.0 সর্বশেষতম সফ্টওয়্যার ছিল তখন অন্যান্য উত্তরগুলির বেশিরভাগই পোস্ট করা হয়েছিল। আরকজিআইএস 10.1 এ অনেক নতুন আর্কপাই কার্যকারিতা উপলব্ধ হয়ে ওঠে। এই উত্তরটি সেই নতুন কার্যকারিতার সুবিধা গ্রহণ করে। এটি 10.0 এর জন্য উপযুক্ত হবে না তবে 10.1 এবং পরবর্তীকালের জন্য বর্ধিত কর্মক্ষমতা এবং কার্যকারিতা সরবরাহ করে।

import arcpy

input_feature_class = 'C:\your_feature_class.shp'
wkid = 4326 # wkid code for wgs84
spatial_reference = arcpy.SpatialReference(wkid)

fields_to_work_with = ['SHAPE@']

with arcpy.da.SearchCursor(input_feature_class,
                           fields_to_work_with) as s_cur:
    for row in s_cur:
        point_in_wgs84 = row[0].projectAs(spatial_reference)
        print point_in_wgs84.firstPoint.X, point_in_wgs84.firstPoint.Y

এই কোড স্নিপেট ব্যবহার wkid করার একটি স্থানিক রেফারেন্স অবজেক্ট তৈরি বরং একটি স্ট্রিং উপস্থাপনা লেখার চেয়ে আরো আধুনিক ব্যবহার ডেটা অ্যাক্সেস এক্সিকিউটেবল-এর পাথ , এবং প্রকল্প পৃথক জ্যামিতি projectAs () মেথড ব্যবহার অবজেক্টের


চমৎকার উত্তর. আমি প্রিন্টে কেবল এক্স এবং ওয়াই স্যুইচ করার পরামর্শ দেব, কারণ
ডাব্লু জিএস 84

এমনকি সহজ, শুধু এটি করুন। srs = arcpy.SpatialReferences (4326) xy_coords = arcpy.da.FEatureClassToNumPyArray (ইনপুট_ফায়ার_ক্লাস, 'শেপ @ এক্সওয়াই', স্থানিক_সংশ্লিষ্ট = srs) মুদ্রণ (xy_coords)
dfresh22

5

জেমসের পরামর্শটি বিস্তারিতভাবে জানাতে, পাইথন / আরকিপি ব্যবহার করে এখানে একটি ন্যূনতম কোড উদাহরণ রয়েছে:

import arcpy

def main():
    projectedPointFC = r'c:\point_test.shp'
    desc = arcpy.Describe(projectedPointFC)
    shapefieldname = desc.ShapeFieldName

    rows = arcpy.SearchCursor(projectedPointFC, r'', \
                              r'GEOGCS["GCS_WGS_1984",' + \
                              'DATUM["D_WGS_1984",' + \
                              'SPHEROID["WGS_1984",6378137,298.257223563]],' + \
                              'PRIMEM["Greenwich",0],' + \
                              'UNIT["Degree",0.017453292519943295]]')

    for row in rows:
        feat = row.getValue(shapefieldname)
        pnt = feat.getPart()
        print pnt.X, pnt.Y

if __name__ == '__main__':
    main()

4

আপনি একে অভিক্ষেপ বলুন বা না বলুন, আমি নিশ্চিত যে সংজ্ঞা অনুসারে, আপনি যখন একটি স্থানিক রেফারেন্স সিস্টেম থেকে অন্য স্থানাঙ্কের মানগুলি অনুবাদ করেন তখন আপনি পুনরায় / আন-প্রজেক্টিং হন।

আমি আর্কপাইয়ের সাথে তেমন পরিচিত নই, তবে 9.3-তে আর্কিগিসিপিকেটে আপনাকে পুরো বৈশিষ্ট্য বর্গটি প্রজেক্ট করতে হবে।

আপনার প্রয়োজনীয় প্রজেকশন / ট্রান্সোরোমেশন অ্যালগরিদমের জটিলতার উপর নির্ভর করে আপনি বেসিক পাইথন গণিতে স্থানাঙ্কগুলির জন্য নিজের প্রজেকশনটি সর্বদা রোল করতে পারেন। এটি আপনাকে বৈশিষ্ট্য স্তরে মান প্রক্ষেপণের সমন্বয় করতে দেয় would

আপনি যদি ওজিআর পাইথন বাইন্ডিংগুলি ব্যবহার করতে উন্মুক্ত হন তবে আপনি 'অনুসন্ধান কার্সার' এর মতো বৈশিষ্ট্যের মধ্যে বৈশিষ্ট্য স্তরে প্রজেক্ট করতে পারেন।


দুর্ভাগ্যক্রমে আমি যে স্ক্রিপ্টটি ব্যবহার করছি তা সহ আমি নন-ইএসআরআই স্টাফ ব্যবহার করতে পারি না। যদিও ইএসআরআই ওজিআর এবং জিডিএল ব্যবহার করে (কাউকে বলবেন না, ঠিক?) ...
কেন্টন ডব্লিউ

প্রকৃতপক্ষে, আরও ভাল রুট হতে পারে কোনওভাবে ইনপুট স্থানাঙ্কগুলিতে কীভাবে সরাসরি PROJ4 ব্যবহার করবেন তা নির্ধারণ করা।
কেন্টন ডব্লিউ

@ কেন্টন - এর মধ্যে কী আপনার নিজস্ব কাস্টম অ্যালগরিদমও রয়েছে (বিদ্যমান কোডের ভিত্তিতে)? আপনার যদি ইউটিএম -> ডাব্লু জিএস 84 রূপান্তর করতে হয় তবে অজগরে আমি পোস্ট করতে পারার কোডটি আমার আছে। পর্যায়ক্রমে, আপনি প্রজ 4 থেকে প্রয়োজনীয় অ্যালগরিদম বের করতে এবং পরিবর্তে এটি ব্যবহার করতে পারেন। অথবা আপনি যদি সত্যিই ইএসআরআই কোড ব্যবহারে সীমাবদ্ধ থাকেন (এবং প্রস্তাবিত মতো একটি সম্পূর্ণ বৈশিষ্ট্য শ্রেণি প্রজেক্ট করতে চান না), আরকোবজেক্টস ব্যবহার করে প্রজেক্টে একটি সাধারণ সি লাইব্রেরি লিখুন, তারপরে সিটিপস ব্যবহার করে পাইথন থেকে কল করুন। বা আরকি দিয়ে আটকে থাকুন এবং একটি সম্পূর্ণ বৈশিষ্ট্য বর্গ প্রকল্প করুন :(
সাসা আইভেটিক

@ কেন্টন - দ্রুত অনুসন্ধান পাইপ্রোজ (কোড. google.com/p/pyproj ) দেয়, আপনি কীভাবে প্রজ 4 লাইব্রেরিতে কল করতে পাইথন ব্যবহার করবেন তার উদাহরণের জন্য এটি দেখতে পারেন।
সাসা আইভেটিক

@ কেন্টন - যদি এটি কোনও ইউটিএম NAD83 => ভৌগলিক ডাব্লু জিএস ৮৪ প্রক্ষেপণ কোনও ডেটাম রূপান্তর না করে থাকে, আপনি খাঁটি অজগরটিতে অ্যালগরিদমটি প্রয়োগ করতে সক্ষম হবেন। স্নাইডারের বইটিতে সমীকরণগুলি রয়েছে: অনলাইনপবস.আর.এস.এস.এস.ভি. / ডিজেভু / পিপি / পিপি_1395.pdf আমার কাছে একটি ওরাকল পিএল / এসকিউএল ফাংশন রয়েছে যা আপনি কোড চাইলে এটি করে। আমি পাইথনের কাছে এই ফাংশনটি পোর্ট করার অর্থ করছি, তবে সাধারণত কেবল ওজিআর / ওএসআর ব্যবহার করি ...
ডেভিডএফ

4

আর্কপাই 10.0 এ পৃথক জ্যামিতিগুলি প্রজেক্ট করার ক্ষমতা নেই। তবে, আপনি একটি বৈশিষ্ট্য সেট তৈরি করতে পারেন (বা একটি মেমোরি বৈশিষ্ট্যযুক্ত শ্রেণি) এবং প্রকল্প যা ডিস্কের ওয়ার্কস্পেসে বা কোথাও একটি ডেটাবেসে পূর্ণ-বর্ধিত বৈশিষ্ট্য শ্রেণীর পরিবর্তে।


যা হ'ল আমি এড়াতে আশা করছিলাম। আপনি যে পাওয়ার পেতে পারেন তার জন্য আমাকে ইচ্ছা করে তোলে। আরকওবজেক্টসের সাথে নেট করুন ...
কেন্টন ডব্লিউ

0

আমি বৈশিষ্ট্য শ্রেণি তৈরি করতে চাইছেন না তার প্রধান কারণ হ'ল আরকিপি.ক্রিয়েট ফিচারক্লাস_ম্যানেজমেন্ট ধীর হতে পারে। আপনি arcpy.da.NumPyArrayTofeatureClass ব্যবহার করতে পারেন, যা ইন-মেমরি বৈশিষ্ট্য শ্রেণীর জন্য কম বেশি তাত্ক্ষণিক:

In [1]: import arcpy

In [2]: import numpy as np

In [3]: geosr = arcpy.SpatialReference('Geographic Coordinate Systems/Spheroid-based/WGS 1984 Major Auxiliary Sphere')

In [4]: tosr = arcpy.SpatialReference('Projected Coordinate Systems/World/WGS 1984 Web Mercator (auxiliary sphere)')

In [5]: npai=list(enumerate(((-115.12799999956881, 36.11419999969922), (-117, 38.1141))))

In [6]: npai
Out[6]: [(0, (-115.12799999956881, 36.11419999969922)), (1, (-117, 38.1141))]

In [7]: npa=np.array(npai, np.dtype(([('idfield', np.int32), ('XY', np.float, 2)])))

In [8]: npa
Out[8]: 
array([(0, [-115.12799999956881, 36.11419999969922]),
       (1, [-117.0, 38.1141])], 
      dtype=[('idfield', '<i4'), ('XY', '<f8', (2,))])

In [9]: fcName = arcpy.CreateScratchName(workspace='in_memory', data_type='FeatureClass')

In [10]: arcpy.da.NumPyArrayToFeatureClass(npa, fcName, ['XY'], geosr)

In [11]: with arcpy.da.SearchCursor(fcName, 'SHAPE@XY', spatial_reference=tosr) as cur:
    ...:     print list(cur)
    ...:     
[((-12815990.336048, 4316346.515041453),), ((-13024380.422813002, 4595556.878958654),)]

-1
import arcpy
dsc = arcpy.Describe(FC)
cursor = arcpy.UpdateCursor(FC, "", "Coordinate Systems\Geographic Coordinate   Systems\World\WGS 1984.prj")
for row in cursor:
  shape=row.getValue(dsc.shapeFieldName)
  geom = shape.getPart(0)
  x = geom.X
  y = geom.Y
  row.setValue('LONG_DD', x)
  row.setValue('LAT_DD', y)
  cursor.updateRow(row)

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