مع وظائف المكانية SQL2008، كيف يمكنني توليد مضلع تحتوي على نتائج لaggreation

StackOverflow https://stackoverflow.com/questions/1212297

سؤال

ولقد حصلت على الجدول من النقاط، ولكل منها اسما، وخطوط العرض والطول، ورمز المنطقة. ما أود القيام به هو إجراء التجميع (أي "مجموعة من" شرط) والعودة مضلع تحتوي على جميع النقاط لرمز المنطقة بشكل خاص.

وأنا أعاني قليلا لتجد حتى إذا كان هناك أي بني في تجمعات لأنواع البيانات الجغرافية الرغم من ذلك، ناهيك عن أن تعطيني المضلع المحيط

لجدلا، افترض لقد جدول الذي يبدو قليلا مثل:

+---------+------+---------+---------+
| Name    | Area | Lat     | Long    |
+---------+------+---------+---------+
| Ipswich | A    | 52.053  |  1.156  |
| Luton   | A    | 51.8717 | -0.4246 |
| Melton  | A    | 52.1064 |  1.3322 |
| Didcot  | B    | 51.6024 | -1.2321 |
| Oxford  | B    | 51.7486 | -1.265  |
+---------+------+---------+---------+

و(في الواقع، وأصغر مساحة له 57 نقطة، وأكبر 626)

هل كانت مفيدة؟

المحلول

وبينما لا توجد وسيلة المدمج في القيام بذلك، وهناك المجاميع المتاحة كجزء من SQL المكانية حزمة كود بلاكس. اعتمادا على ما تريده بالضبط، قد تكون مهتمة في استخدام أي من المربع المحيط الحصى أو الحصى الاتحاد تليها دعوة للانغلاق محدب للحصول على الحد الأدنى للمضلع بدلا من مربع.

نصائح أخرى

لفوائد لمن وصلت هنا ويريد أن يرى رمز تحصل مع (رهيبة) SQL أدوات المكانية :

DECLARE @points TABLE
(
 Name VARCHAR(50),
 Area CHAR(1),
 Point GEOGRAPHY
)

INSERT INTO @points VALUES ('Ipswich', 'A', geography::STGeomFromText('POINT( 1.156  52.053  )', 4326))
INSERT INTO @points VALUES ('Luton', 'A', geography::STGeomFromText('POINT(  -0.4246 51.8717 )', 4326))
INSERT INTO @points VALUES ('Melton', 'A', geography::STGeomFromText('POINT( 1.3322  52.1064 )', 4326))

INSERT INTO @points VALUES ('Didcot', 'B', geography::STGeomFromText('POINT( -1.2321 51.6024 )', 4326))
INSERT INTO @points VALUES ('Oxford', 'B', geography::STGeomFromText('POINT( -1.265  51.7486 )', 4326))

SELECT  dbo.ConvexHullGeography(dbo.GeographyUnionAggregate(point)), 'red' as color, 1 as thickness
FROM @points
GROUP BY Area

ويمكنك عرض النتيجة في GeoQuery2008 .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top