سؤال

أقوم بإنشاء خريطة Google MACHUP و AM باستخدام SQL 2008.

سيكون لدي عدد كبير من النقاط على الأرض وسوف أرغب في إجراء حسابات مختلفة عليها في SQL - مثل تحديد جميع النقاط الواردة في تعيني معين، أو حدد كل النقاط في غضون 10 كيلومترات من XY.

لم أستخدم أبدا وميزات SQL المكانية من قبل. يجب أن أستخدم geography أو ال geometry نوع البيانات لهذا؟

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

المحلول

الجغرافيا هي النوع الذي يهدف إلى تخطيط النقاط على الأرض.

إذا كان لديك جدول يخزن نقاط خرائط Google مثل هذا:

CREATE TABLE geo_locations (
    location_id       uniqueidentifier  NOT NULL,
    position_point    geography         NOT NULL
);

ثم يمكنك ملء النقاط به مع هذا الإجراء المخزن:

CREATE PROCEDURE proc_AddPoint
    @latitude     decimal(9,6),
    @longitude    decimal(9,6),
    @altitude     smallInt
AS

DECLARE @point     geography = NULL;

BEGIN

    SET NOCOUNT ON;

    SET @point = geography::STPointFromText('POINT(' + CONVERT(varchar(15), @longitude) + ' ' + 
                                                       CONVERT(varchar(15), @latitude) + ' ' + 
                                                       CONVERT(varchar(10), @altitude) + ')', 4326)

    INSERT INTO geo_locations
    (
        location_id, 
        position_point
    )
    VALUES 
    (
        NEWID(),
        @point
    );

END

ثم إذا كنت ترغب في الاستعلام عن خطوط الطول والعرض والارتفاع، فما عليك سوى استخدام تنسيق الاستعلام التالي:

SELECT
    geo_locations.position_point.Lat  AS latitude,
    geo_locations.position_point.Long AS longitude,
    geo_locations.position_point.Z    AS altitude
FROM
    geo_locations;

نصائح أخرى

يمكنك اتباع الجواب الوارد في postgis. التعليمات

أنا جميعا مرتبك. ما هي مخزن البيانات التي يجب أن أستخدمها هندسة أو جغرافيا؟

إجابة قصيرة: الجغرافيا هي نوع بيانات جديد يدعم قياسات المسافات الطويلة المدى. إذا كنت تستخدم الجغرافيا - فلن تحتاج إلى تعلم الكثير عن أنظمة تنسيق مستو. الجغرافيا هي بشكل عام أفضل إذا كنت تهتم به هو قياس المسافات والأطوال ولديك بيانات من جميع أنحاء العالم. نموذج Datatype الهندسي هو نوع بيانات أقدم يحتوي على العديد من الوظائف التي تدعمها وتتمتع بدعم كبير من أدوات الطرف الثالث. من الأفضل إذا كنت مرتاحا جدا للأنظمة المرجعية المكانية أو تتعامل مع البيانات المحلية حيث تناسب جميع بياناتك في نظام مرجعي مكاني واحد (SRID)، أو عليك القيام بالكثير من المعالجة المكانية. الرجوع إلى القسم 8.8، "مصفوفة دعم وظيفة Postgis" لمعرفة ما هو معتمد حاليا وما لا.

تتبع أنواع الهندسة والجغرافيا في كلا قواعد البيانات وخوادم البريد و SQL Server، نفس المفهوم، بحيث تنطبق الإجابة المقدمة في الأسئلة الشائعة في Postgis على مشكلتك.

على الأرجح أنك تريد نوع الجغرافيا منذ أن تمثل انحناء الأرض. هندسة أكثر للحصول على عرض "مسطح" للأشياء. تحقق من هذه المقالة لمزيد من المعلوماتhttp://www.mssqltips.com/tip.asp؟tip=1847.

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