मैंने तालिका को निर्यात करने का प्रयास किया है, लेकिन geometry
प्रकारों को टेक्स्ट में निर्यात करना संभव नहीं लगता .. हालांकि यह वैसे भी करना मुश्किल नहीं था .. आपको कुछ वर्षों तक आकार देने वाले आकृतिफाइल को Google पर जाना होगा पहले जो दुनिया और उनके समय क्षेत्र में सभी अनुबंधों को मानचित्रित करता है .. फिर आपको उस प्रोग्राम को कुछ प्रोग्राम का उपयोग कर SQL Server 2008 में निर्यात करने की आवश्यकता है .. मैंने कई गुना (एंटरप्राइज़ संस्करण या ऊपर का उपयोग करना याद रखें) .. फिर मैं डेटा का उपयोग कर क्वेरी करता हूं निम्नलिखित संग्रहीत प्रक्रिया:
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(([email protected] + 7.5)/15) AS Offset, NULL AS AreaI
आकारफाइल में कोई समस्या है क्योंकि राष्ट्रीय जल मैप नहीं किया गया है। मैं शायद इस समस्या को हल करने के लिए @ g.STBuffer() का उपयोग कर रहा हूं ..
यह भी देखें, [यह समुदाय विकी] (http://stackoverflow.com/q/16086962/634824) –