পোলিগন সহ বহুভুজনে পয়েন্ট গণনা করুন


16

আমি একটি সাধারণ সমস্যা পেয়েছি: আমি বহুভুজ একটি সেট মধ্যে পয়েন্ট সংখ্যা গণনা করতে চান।

আমার কাছে ইতিমধ্যে একটি এসকিউএল রয়েছে তবে এটি কেবলমাত্র বহুভুজটির গিডটি ফিরিয়ে দেয় যাতে আসলে পয়েন্ট রয়েছে।

আমার টেবিলগুলি: 19.000 সারি সহ বহুভুজ স্তর এবং 450 সারি সহ একটি বিন্দু স্তর।

নিম্নলিখিত এসকিউএল

select grid.gid, count(*) AS totale FROM grid, kioskdhd3 WHERE 
st_contains(grid.geom,kioskdhd3.geom) GROUP BY grid.gid;

কেবলমাত্র 320 বহুভুজ ফিরে আসুন যার মধ্যে পয়েন্ট রয়েছে। তবে আমি সমস্ত বহুভুজ ফিরে পেতে চাই, এমনকি পয়েন্টের সংখ্যা 0 বলেও ভেবেছিলাম।

অবশ্যই এটি আমার WHERE-clause এর সাথে সম্পর্কিত। আমার স্টাট কন্টেন্টগুলিতে আমাকে কোথায় রাখতে হবে?

ধন্যবাদ কার্স্টেন



ধন্যবাদ, তবে তাদের সবারই যেখানে একটি দফা আছে। আমার দরকার আছে কিনা জানি না। কীভাবে আবার লিখবেন?
hoge6b01

উত্তর:


23
SELECT grid.gid, count(kioskdhd3.geom) AS totale 
FROM grid LEFT JOIN kioskdhd3 
ON st_contains(grid.geom,kioskdhd3.geom) 
GROUP BY grid.gid;

হাই নিক্লাস, এই উত্তরটি মেলিং তালিকা থেকে পেয়েছেন, তাই না? সবাইকে ধন্যবাদ
hoge6b01

2
না, দুঃখিত, এটি কি একই রকম? ঠিক আছে, সম্পর্কযুক্ত ডাটাবেসগুলির সাথে লেনদেন করার সময় বাইরের সাথে যোগ দেওয়া কোনও রকেট বিজ্ঞান নয় ;-)
নিক্লাস অ্যাভান

1
:-) আমাকে তালিকাটি চেক করতে হয়েছিল। সময় দেখুন। এখানে আমার উত্তর ছিল- উত্তর দেওয়ার আগে, তবে যেমনটি আপনি বলেছেন, খুব অনুরূপ :-)
নিক্লাস অ্যাভান

-1

এই প্রতি বাম যোগদানগুলি জিআইএসটি সূচকগুলিতে সমর্থিত নয়।

আমি কি সুপারিশ করতে পারি:

SELECT grid.gid, 
       SUM(CASE WHEN st_contains(grid.geom,kioskdhd3.geom) THEN 1 ELSE 0 END) AS total
FROM grid, kioskdhd3 
GROUP BY grid.gid;

1
ক্যোরিটি স্থানিক সূচকগুলি ব্যবহার করে না: ব্যাখ্যা.ডেপসজেস / এস / ইউ Iআই । নিক্লাস এর উত্তর দেয়: ব্যাখ্যা.ডেপস্
এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.