ST_ClosestPoint (লাইন, পয়েন্ট) রেখা ছেদ করে না


11

আমার পোস্টজিআইএস ডাটাবেসে (পোস্টগ্রিজ ৮.৪.১-তে পোস্টজিআইএস 1.5) আমার কাছে দুটি টেবিল রয়েছে: রাস্তা (লাইনস্ট্রিংগুলি দিয়ে গঠিত) এবং ক্র্যাশগুলি (পয়েন্টগুলির সমন্বয়ে)। আমি প্রতিটি ক্র্যাশকে একটি রাস্তার সাথে সম্পর্কযুক্ত করার চেষ্টা করছি, তবে নিম্নলিখিত কাজ করতে আমার সমস্যা হচ্ছে:

SELECT ST_ClosestPoint(road.the_geom, crash.the_geom),
    ST_Intersects(ST_ClosestPoint(road.the_geom, crash.the_geom), road.the_geom)
    ST_Distance(ST_ClosestPoint(road.the_geom, crash.the_geom), crash.the_geom) AS distance
    FROM
        --Table crashes is already in SRID 4326
        (SELECT the_geom FROM crashes WHERE gid = 360) as crash,
        (SELECT ST_SetSrid(the_geom, 4326) as the_geom from roads) as road
    ORDER BY distance;

এই রাউড়িটি প্রতিটি রাস্তায় জিড 360 দিয়ে ক্র্যাশের নিকটতম পয়েন্টটি ফিরিয়ে আনতে হবে, তবে ST_Itersters ফাংশনটি প্রথম ফলাফলের জন্য (সমস্ত রাস্তার সত্যিকারের নিকটতম পয়েন্ট) মিথ্যা প্রত্যাবর্তন করবে। আমি কি ভুল কিছু করছি? দুর্ঘটনার সবচেয়ে কাছের রাস্তার সাথে সংযুক্ত করার জন্য কি অন্য কোনও উপায় আছে?

উত্তর:


9

এটি এস সমস্যা থেকে আসে যে ST_ আন্তঃরীক্ষাগুলির কোনও সহনীয়তা নেই। এমনকি ডাবল স্পষ্টতা স্থানাঙ্কগুলি অনেকগুলি দশমিক ধরে রাখলে তারা একটি গ্রিড গঠন করে যেখানে পয়েন্টগুলির একমাত্র স্থানগুলি ক্রসিংগুলিতে থাকে। প্রায়শই রেখাটি এই ক্রসগুলির কোনওটির সাথে ছেদ করে না এবং কোনও বিন্দু লাইনটি একেবারে ছেদ করার কোনও উপায় নেই। কর্মক্ষেত্রটি হল একটি সামান্য সহনশীলতার পরিবর্তে st_dwithin ব্যবহার করা।

/ Nicklas

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