পোস্টজিআইএসে আমি কীভাবে পলিনগুলি প্রতি এন মিটারে পয়েন্টগুলিতে রূপান্তর করতে পারি?


14

এই হিসাবে প্রায় একই প্রশ্ন , কিন্তু আমার PostGIS ব্যবহার করা প্রয়োজন।

আমার কাছে প্রচুর পোলাইন রয়েছে, এবং এই লাইনগুলি বরাবর প্রতিটি এন মিটারে পয়েন্টগুলিতে ট্র্যাসফর্ম করতে চাই।

সম্পাদনা: স্টিফানকে অনেক ধন্যবাদ। আমার চূড়ান্ত কোয়েরিটি কিছুটা আলাদা ছিল, সম্ভবত পোস্টজিআইএস (1.5) এর পুরানো সংস্করণের কারণে, তবে শেষ পর্যন্ত আমি যা পেয়েছিলাম তা পেয়েছি। পয়েন্টগুলি রাস্তার ঘনত্বের হিটম্যাপে সংযুক্ত করা হয়েছিল। এখানে চিত্র বর্ণনা লিখুন


উত্তর:


17

এই ক্যোয়ারিতে কৌশলটি করা উচিত:

WITH line AS 
    (SELECT
        your_polylinestring_id,
        (ST_Dump(geom)).geom AS geom
    FROM your_polylinestring_table),
linemeasure AS
    (SELECT
        ST_AddMeasure(line.geom, 0, ST_Length(line.geom)) AS linem,
        generate_series(0, ST_Length(line.geom)::int, 10) AS i
    FROM line),
geometries AS (
    SELECT
        i,
        (ST_Dump(ST_GeometryN(ST_LocateAlong(linem, i), 1))).geom AS geom 
    FROM linemeasure)

SELECT
    i,
    ST_SetSRID(ST_MakePoint(ST_X(geom), ST_Y(geom)), 31468) AS geom
FROM geometries
  1. প্রথমে আপনি আপনার পলিনয়স্ট্রিং কলাম থেকে স্বতন্ত্র লাইনস্ট্রিংগুলি নির্বাচন করুন ST_Dump

  2. তারপরে আপনাকে ST_AddMeasure0 (লাইনস্ট্রিংয়ের শুরু) এবং লাস্টারিংয়ের শেষ (লাস্ট্রিংয়ের দৈর্ঘ্যের সমান) দিয়ে শুরু করে পরিমাপের উপাদানগুলি সংজ্ঞায়িত করতে হবে । Generate_series10 ধাপে এই পরিমাপের উপর একটি সিরিজ তৈরি করে এখানে আপনি সংজ্ঞা দিতে পারেন "n metres"(এই উদাহরণে 10 মিটার)। iমান যে linestring জন্য নতুনভাবে শুরু হয়।

  3. সহ ST_LocateAlongএবং ST_GeometryNআপনি একটি বহুমাত্রিক বিন্দু জ্যামিতি তৈরি করুন।

  4. অবশেষে আপনাকে এই জ্যামিতির X এবং Y মানগুলি বের করতে হবে এবং এটি থেকে একটি বিন্দু তৈরি করতে হবে।

ফলাফলটি এরকম দেখতে পারে: এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা

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


আপনি কি পরিষ্কার করতে পারেন, খ / সি আমি এই এসকিউএল কনস্ট্রাক্টসের সাথে পরিচিত নই: কোথায় WITH line ASব্যবহৃত হয়? আমি অন্য কোথাও 'লাইন' দেখতে পাচ্ছি না।
কুলেব্রন

2
@ কুলেব্রন WITH Queryবৃহত্তর প্রশ্নের জন্য অস্থায়ী সারণীর ব্যবহার সরবরাহ করে। এখানে কিছু তথ্য রয়েছে: postgresql.org/docs/8.4/static/queries-with.htmllineপরবর্তী subquery ব্যবহৃত হয় linemeasure। এই সাবকিউরিতে নির্বাচিত ডেটা সাবকোয়ারিতে করা নির্বাচনের উপর ভিত্তি করে line। তারা একে অপরের উপর নির্মিত হয়। আশা করি যে সাহায্য!
স্টেফান

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