He intentado exportar la tabla, pero no parece posible exportar geometry
tipos al texto ... sin embargo, no fue tan difícil de hacer de todas formas .. Necesita googlear el archivo de formas que Manifold produjo hace unos años hace que mapea todas las contries en el mundo y sus zonas horarias .. Luego hay que exportar los datos a SQL Server 2008 mediante algún programa .. solía Múltiple (recuerde utilizar Enterprise Edition o superior) .. Entonces consultar los datos utilizando el siguiente procedimiento almacenado:
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
Hay un problema en el archivo de forma debido a las aguas nacionales no está asignada. Pensé en quizás usar @g.STBuffer() para solucionar este problema.
Ver también, [esta comunidad wiki] (http://stackoverflow.com/q/16086962/634824) –