জ্যামিতি () অবজেক্টের 'দৈর্ঘ্য' বৈশিষ্ট্য অ্যাক্সেস করার সময় পরিমাপের একক কীভাবে নির্দিষ্ট করবেন?


10

ক্যালকুলেটফিল্ড_ম্যানেজমেন্ট সরঞ্জামটি ব্যবহার করে, আকারের দৈর্ঘ্য গণনা করার সময় কেউ পরিমাপের একক নির্দিষ্ট করতে পারে:

#Calculate polyline lengths in miles
polylines = "C:\sampleShape.shp"
arcpy.CalculateField_management(polylines, "shapeLen", "!Shape.length@MILES!", "PYTHON_9.3")

আমি প্রতিটি বৈশিষ্ট্যের 'SHAPE @ LENGTH' ব্যবহার করে কার্সারের মধ্যে একই জিনিসটি করতে চাই, আমার পছন্দ অনুসারে দৈর্ঘ্যটি ফিরে এসেছে:

#hypothetical example 1
with arcpy.da.UpdateCursor(polylines, field_names=["SHAPE@LENGTH.FEET", "shapeLen"]) as upCurs:
    for row in upCurs:
        row[1] = row[0]
        upCurs.updateRow(row)

অথবা সম্ভবত (কম দক্ষ) @SHAPE জ্যামিতি অবজেক্টটি ব্যবহার করে ?:

#hypothetical example 2
with arcpy.da.UpdateCursor(polylines, field_names=["@SHAPE", "shapeLen"]) as upCurs:
    for row in upCurs:
        row[1] = row[0].length@FEET
        upCurs.updateRow(row)

এই কাজ করতে কিছু উপায় আছে কি?

উত্তর:


7

আপাতত আপনাকে একটি কার্যবিধ ব্যবহার করতে হবে, দৈর্ঘ্য সর্বদা জ্যামিতির স্থানিক রেফারেন্সের লিনিয়ার ইউনিটে থাকবে। ফুট থেকে মিটার এবং metersPerUnitসম্পত্তির জন্য রূপান্তর ফ্যাক্টরটি জেনে রাখা আপনাকে বেশিরভাগ রাস্তাটি পাওয়া উচিত, অথবা একটি ক্ষেত্র যুক্ত করা এবং ফিল্ড ক্যালকুলেটরটির shape.length@feetমতো আপনি আগে উল্লেখ করেছেন using অন্য বিকল্পটি হ'ল কার্সারের স্থানিক রেফারেন্সটিকে ভৌগলিক স্থানাঙ্ক সিস্টেম হিসাবে চিহ্নিত করা (যেমন ডাব্লুজিএস ৮৮) এবং কোনও প্রজেক্টড কোঅর্ডিনেট সিস্টেম নয়। তারপরে Geometry.getLength()এবং geometry.getArea()পদ্ধতিগুলি মিটারে নম্বরগুলি ফিরিয়ে দেবে, যা আপনি আবার খুব সহজেই পায়ের কাছে রূপান্তর করতে পারবেন।

ইউনিটগুলি নির্দিষ্ট করার জন্য আমরা কেবল 10.2.1 এ Geometry.getLength/getArea পদ্ধতিগুলিতে একটি alচ্ছিক দ্বিতীয় যুক্তি যুক্ত করেছি , সুতরাং এটি যখনই জাহাজে আসে এবং যখনই এটি আপনার কাছে আসে তখন আপনাকে এটি করার সরাসরি উপায় থাকা উচিত, তবে আপাতত আপনার অন্য কৌশলটি ব্যবহার করা উচিত।


6

জ্যামিতি অবজেক্টের সাথে, getLength () পদ্ধতিটি সর্বদা মিটারের দূরত্বে ফিরে আসে, যেমন এখানে রয়েছে । উদাহরণস্বরূপ আপনি যদি কেবল মাইল বা পায়ে রূপান্তর করেন তবে এটি পছন্দসই হতে পারে। মিটার থেকে অন্য রৈখিক দূরত্বের যে কোনওটিতে রূপান্তর করা তুলনামূলকভাবে সোজা হবে।

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

উদাহরণস্বরূপ, আমি NAD_1983_StatePlane_ লুইসিয়ানা_সৌথ_এফআইপিএস 7070_ফিট, একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম (পিসিএস) এ একটি পলাইনলাইন শেফফিল আছে।

এই কোড সহ, আমি দশমিক ডিগ্রিতে প্রতিটি বস্তুর দৈর্ঘ্য অ্যাক্সেস করতে পারি:

spatref = arcpy.SpatialReference(4326) #EPSG code for WGS84
length = [row[0] for row in arcpy.da.SearchCursor("layer", "SHAPE@LENGTH", spatial_reference=spatref)]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.