আমি দীর্ঘকাল ধরে পোস্টজিআইএস ব্যবহার করছি তবে LINESTRING
জ্যামিতিটি কখনও ব্যবহার করতে হয়নি ...! :)
আমি যা করতে চাই তা এখানে: আমার কাছে লাইনস্টিংসের একটি টেবিল রয়েছে (প্রদত্ত শহরের রাস্তাগুলি উপস্থাপন করে, এসআরআইডি 3395) এবং আমি একটি নির্দিষ্ট বিন্দুর নিকটতম লাইনস্ট্রিংস (জিপিএস অবস্থান, এসআরআইডি 4326) খুঁজে পেতে চাই।
আমি যে সমাধানটি পেয়েছি তা হ'ল expand()
পদ্ধতিটি ব্যবহার করে আমার পয়েন্টের মধ্যে সমস্ত লাইনস্ট্রিংগুলি নির্বাচন করা এবং পদ্ধতিটি ব্যবহার করে প্রতিটি লাইনস্ট্রিং এবং আমার পয়েন্টের মধ্যে দূরত্ব নির্ধারণ করা ST_Distance()
।
এসকিউএলটি এখানে:
SELECT myLineId, myLineName, ST_Distance(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395),myLineGeom) AS myLineDistance
FROM myLines
WHERE myLineGeom && expand(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395), 100)
ORDER BY myLineDistance;
আমি যে ফলাফলগুলি দেখতে পেয়েছি তা ঠিক আছে তবে আমার বাস্তবায়নে কিছু ভুল হয়েছে বলে আমার অনুভূতি রয়েছে।
1) আপনারা কি ভাবেন যে expand()
সমস্ত সম্পর্কিত লাইনস্ট্রিংগুলি পেতে পারেন?
2) আপনারা কি ভাবেন যে ST_Distance()
এটি সঠিক পদ্ধতি ব্যবহারের জন্য? আমি অনুমান করি যে আমি যে দূরত্বটি পেতে চাই তা হ'ল বিন্দু এবং আমার লাইনের মধ্যবর্তীতমতম দূরত্ব এবং লাইনস্ট্রিংয়ের বিন্দুর মধ্যে একটি বিন্দুর মধ্যবর্তী দূরত্ব নয়।
চিত্রণ: