Tôi đã cố gắng xuất bảng nhưng dường như không thể xuất geometry
loại văn bản .. tuy nhiên không khó để thực hiện .. Bạn cần google shapefile Manifold được tạo vài năm Sau đó, bạn cần xuất dữ liệu đó sang SQL Server 2008 bằng một số chương trình .. Tôi đã sử dụng Manifold (nhớ sử dụng Enterprise Edition hoặc cao hơn) .. Sau đó, tôi truy vấn dữ liệu bằng cách sử dụng thủ tục được lưu trữ sau đây:
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
Có vấn đề trong shapefile vì vùng biển quốc gia không được lập bản đồ. Tôi có thể sử dụng @ g.STBuffer() để giải quyết vấn đề này ..
Xem thêm, [wiki cộng đồng này] (http://stackoverflow.com/q/16086962/634824) –