মিটারে জ্যামিতির দৈর্ঘ্য পাচ্ছেন?


13

পোস্টজিআইএস-এ, ST_length()ফাংশনটি কয়েকটি ইউনিটে একটি লাইনস্ট্রিংয়ের দৈর্ঘ্য দেয়, তবে মিটারে নয়।

ST_Length()মিটার ছাড়াও কি কোনও ফাংশন আছে ?

উত্তর:


11

St_Length () তার স্থানিক রেফারেন্স সিস্টেমের ইউনিটগুলির দৈর্ঘ্য প্রদান করে। আপনি মিটার পেতে চাইলে আপনাকে নিজের বৈশিষ্ট্যটিকে অন্য একটি এসআরএসে রূপান্তর করতে হবে যা ইউনিট হিসাবে মিটার ব্যবহার করে। এটি অন-ফ্লাইয়ে করা যায়, সুতরাং অন্য কোনও ডেটা সেট লেখার বিষয়ে চিন্তা করবেন না।

SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;

এই উদাহরণে, এসআরআইডি 26915 হ'ল ইউটিএম জোন 15 এন, এনএডি 83।


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

18

দেখে মনে হচ্ছে পোস্টজিআইএস ২.০ (সম্ভবত এর আগে) আপনি ST_Lengthভূগোলের জ্যামিতিকে পুনর্নির্মাণের মাধ্যমে এটিও করতে পারেন :

ST_Length(geom::geography)

উদাহরণস্বরূপ, 50 ° N, 12 ° E এবং 51 ° N, 13 ° E এর মধ্যে দূরত্ব:

SELECT ST_Length(geom) AS deg,
       ST_Length(geom::geography)/1000 AS km_1,
       ST_Length_Spheroid(geom, 'SPHEROID["WGS 84",6378137,298.257223563]')/1000 as km_2
FROM   ST_GeomFromText('LINESTRING(12 50, 13 51)' , 4326) AS geom

যা দেয়

       deg       |       km_1       |       km_2       
-----------------+------------------+------------------
 1.4142135623731 | 131.935962780384 | 131.935962780384

2

এসকিউএল অনুরোধের উদাহরণ: পোষ্ট-ইন-বেশ কয়েকটি সারণীর-জন্য-পললাইন-জ্যামিতির দৈর্ঘ্যের-গণনা করার পদ্ধতি

এসকিউএল অনুরোধ (কিলোমিটার দৈর্ঘ্য (/ 1000-মিটার জন্য মুছে ফেলা)):

SELECT 
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads 
FROM 
"D1_r";

0

নিম্নলিখিত সূত্রটি ব্যবহার করুন:

select ST_Length(ST_Transform(ST_GeomFromEWKT('SRID=4326;'||st_astext(the_geom)),26986)) as geolength from my_table;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.