سؤال

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

وإن كنت حول الاستعلام عن شكل ESRI، فقد حصلت على جميع البلدان في العالم وحولتها الحريات، ولكن يبدو نوعا من المجمع. إذا كان ذلك يجب أن يكون الحل، هل تعرف أي مكتبة .NET تقدم هذه الوظيفة؟

نصائح أخرى

لقد حلت هذا مع تطبيق العميل. كانت هذه التقنية هي جعل خريطة أسطوانية مشفرة بالألوان للعالم، في كل منطقة زمنية لها لون فريد. يتم تحويل LAT LONS إلى Optionates Picture Astinates ويتم قراءة لون التنسيق التنسيقي ثم الرجوع إلى Timezone من هذا اللون.

هذا التفسير القصير ليس بالضبط ما فعلته لكنه يحصل على الفكرة عبر. لقد سكنت فعلا من قواميس زوجين واختار منها. استغرق التدريب الأول 2M من ملف الموارد لملء (بعد أن قمت بمعالجة خريطتي وإيقافها إلى بيانات ثنائية). يجب أن يكون خطأ ماكس النظري (للطي بالقرب من خط الاستواء) +/- حوالي 15 ميلا. لسوء الحظ، كانت دقة خريطة البداية أشبه +/- 100 ميل.

لذلك أنا أعيد عن المشروع. لقد كنت في ذلك عدة أيام الآن إنشاء خريطة أكثر دقة وأعلى ريز للأزمة. بضعة أيام أخرى وينبغي القيام به. ستكون ملف المورد حوالي 20 مترا ما لم أتمكن فقط من موارد "مجالات الأوجه" وحسب 90٪ من العالم الذي يمكن حسابه مباشرة (معظم العالم يمكن أن يكون مشتقا رياضيا من خط الطول). لست متأكدا العديد من يهتم بأن ملف موارد كان 20 مترا ولكن البعض قد. على أي حال، إذا كان يبدو أن هناك بعض الفائدة، سأحاول نشر الكود الضروري لتشغيله هنا والموارد ملف واحد من مواقع التعليمات البرمجية العامة. إذا كان هناك مصلحة، فلن أزعجك.

فقط لإعادة تشديد القليل، فإن الرمز الضروري في تطبيقك هو سوى بضعة أسطر فقط، ولكن ملف المورد كبير (W / O تقلصه، فإنك الجديد يعمل 22m). كما أنه سريع (ركض أول 100 متر / ثانية). يتطلب تحميل ملف وتستغرق بعض الوقت. ليس له نسخة 2M أي تأخير ملحوظ ولكن 22 متر قد (ليس هناك بعد).

افحص ال TZ. قاعدة البيانات. أعرف أنها تربط أسماءها في الزمن (مثل المدينة والبلدان والمؤسسة، إلخ). لكنني أعتقد أن هناك امتدادا للإحداثيات في مكان ما.

لقد حاولت تصدير الطاولة ولكنها لا تبدو ممكنة للتصدير geometry أنواع النص إلى النص .. ومع ذلك لم يكن الأمر صعبا في أي حال .. تحتاج إلى Google المنوعي الشكل الذي تم إنتاجه قبل بضع سنوات يقوم بخرائط جميع الاهتزاز في العالم وحول حالات الحال .. ثم تحتاج إلى تصدير هذه البيانات إلى SQL Server 2008 باستخدام بعض البرامج .. لقد استخدمت مشعب (تذكر استخدام Enterprise Edition أو أعلى) .. ثم استمتع بالبيانات باستخدام الإجراء المخزن التالي:

USE [MyDb]
GO
/****** Object:  StoredProcedure [dbo].[GetTimeZone]    Script Date: 11/18/2009 21:23:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetTimeZone]
    @Latitude float,
    @Longitude float
AS
    /* SET NOCOUNT ON */

DECLARE @g geometry

/* Validation */
IF @Latitude > 90 OR @Latitude < -90 OR @Longitude > 180 OR @Longitude < -180
    RAISERROR('Latitude or longitude out of range', 16, 1)

IF @Latitude IS NULL OR @Longitude IS NULL
    RAISERROR('Latitude or longitude cannot be null', 16, 1)

SET @g = geometry::Point(@Longitude, @Latitude, 4326);

IF EXISTS(SELECT * From TimeZones WHERE Shape.STContains(@g) = 1)
    /* Point exists on map, get the info */
    SELECT Name, LocalSumme, Offset, AreaI FROM TimeZones WHERE Shape.STContains(@g) = 1
ELSE
    /* Point is an international water */
    IF(@Longitude >= 0)
        SELECT NULL AS Name, NULL AS LocalSumme, FLOOR((@Longitude + 7.5) / 15) AS Offset, NULL AS AreaI
    ELSE
        SELECT NULL AS Name, NULL AS LocalSumme, -FLOOR((-@Longitude + 7.5) / 15) AS Offset, NULL AS AreaI

هناك مشكلة في الشكل لأن المياه الوطنية غير مصنف. رغم أنه ربما باستخدام @ g.stbuffer () لمعالجة هذه المشكلة ..

كان الحل لتصدير شكل ESRI إلى SQL Server 2008 باستخدام أنواع البيانات المكانية الجديدة.

إذا كان لدى أي شخص حلا أفضل لا تتردد في النشر!

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