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


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.