我聽說SQL Server現在支持像地理一樣的東西。是否可以從經度/緯度獲取城市?我搜索了很多,但找不到任何?是否可以從經度/緯度獲取城市?
回答
您需要使用城市位置加載一些數據 - Geonames(你可能想cities15000.zip
)或Natural Earth(居民點)會是個不錯的地方開始。
CREATE TABLE cities (
name VARCHAR(200) PRIMARY KEY,
location GEOGRAPHY,
);
CREATE SPATIAL INDEX idx_cities_location ON cities(location);
INSERT INTO cities (name, location) VALUES
('Auckland', geography::STGeomFromText('POINT(174.7833 -36.85)', 4326)),
('London', geography::STGeomFromText('POINT(-0.1062 51.5171)', 4326))
;
- 注意所有座標的順序是
(Longitude Latitude)
- 空間索引讓它快。
- 4326是基本經度/緯度的座標系代碼。
然後找最近的城市你想要像查詢一個給定的位置:在SQL Server文檔
DECLARE @g geography = 'POINT(103.75 1.3667)';
SELECT TOP(1) name FROM cities
WHERE location.STDistance(@g) IS NOT NULL
ORDER BY location.STDistance(@g);
更多的例子:
是反向地理編碼只是最近的鄰居搜索?我可以靠近一個城市,但通過(另類)定義在另一個城市嗎?這有多可能是真的?編輯:http://stackoverflow.com/a/13832418/1464716答案。考慮城市邊界的任何實現? – fionbio
@如果你在B,你不可能最接近A ......儘管有時候河流和港口可能會搞砸了。上面的例子將城市視爲點。如果你想使用邊界,上面應該仍然有效(使用(多邊形)多邊形幾何體) - 如果查詢點位於特定的城市多邊形內,則'STDistance()'將返回0,因此它將首先排序。 – rcoup
使用城市15000.zip將只獲得正常的位置地址我能做些什麼來獲得當前地址(確切地址)? – Shridhar
您所描述的功能稱爲「反向地理編碼」 - 取經緯度座標,並將最近地點的名稱返回到該地點。 (地理編碼是相反的 - 提供一個地名來檢索關聯的緯度/經度座標)。
您當然可以構建一個使用SQL Server作爲後端數據庫的反向地理編碼服務,但沒有內置任何東西來提供此類功能。
如果您只是想對一組現有數據進行反向地理編碼,而不是在SQL Server中創建此功能,則可能會發現使用現有Web服務更容易。例如,GEONAMES findNearbyPlaceName具有您通過以下網址範本訪問REST接口:
http://api.geonames.org/findNearbyPlaceName?lat=52.62&lng=1.28&username=demo
此示例返回最近的已知的實體信息的請求,從緯度/經度座標(52.62,1.28)地名數據庫,如下所示:
<geonames>
<geoname>
<toponymName>Norwich</toponymName>
<name>Norwich</name>
<lat>52.62783</lat>
<lng>1.29834</lng>
<geonameId>2641181</geonameId>
<countryCode>GB</countryCode>
<countryName>United Kingdom</countryName>
<fcl>P</fcl>
<fcode>PPLA2</fcode>
<distance>1.51318</distance>
</geoname>
</geonames>
對於空間的功能,你需要SQL 2008或更高版本。
要做的第一件事就是獲得書/電子書:Alastair Aitchison用SQL Server開始Spatial。他擁有SQL 2008和2012版本。他是那裏的頂級專家之一。另一個是'空間戴夫'。披露:不,我沒有收到推薦Alistair書籍的一角錢。我爲GreatData.com工作,並且使用了2008年的書籍,因爲我對SQL很少了解,而且對映射也一無所知,並且由於本書非常好,所以在短時間內能夠非常熟練。
接下來,您需要加載城市邊界。這些是ESRI Shapefile格式,你可以在NationalAtlas.gov免費找到它們(免費的映射文件的一個很好的來源)。
你需要明白只有大城市有地圖邊界文件。使用邊界,您可以使用STIntersects()或其他方法來確定您擁有的緯度/經度座標是否在城市範圍內。
對於規模較小的城市和鄉鎮,你只能得到一個緯度/長點。您可以使用「最近鄰居」邏輯(也可以在書中)確定最近的城市或城鎮,但無法確定它是否在城鎮範圍內。
- 1. 從城市名稱獲取經緯度
- 2. 從經緯度獲取城市名稱
- 3. 如何獲取城市的經緯度?
- 4. 如何從城市名稱獲取經度,緯度android代碼
- 5. 按城市或經度和緯度
- 6. 過濾城市的經緯度與其他城市的距離(經緯度)?
- 7. 如何根據緯度和經度獲取城市?
- 8. 獲取特定城市的緯度和經度android
- 9. 從Google表格的經緯度獲取城市,州和國家
- 10. 從經緯度獲取城市,州,國家
- 11. 從城市和州輸入獲取經度和緯度的快速方法
- 12. 從Android的地址獲取位置(經度/緯度)沒有城市的地址
- 13. 如何使用Facebook API從經度/緯度獲取城市的地點編號
- 14. 如何從GWT的MapVisualization的城市名稱獲取緯度/經度?
- 15. 從給定的城市名稱獲取經度和緯度的簡單API
- 16. 從特定語言的緯度,經度獲取城市名稱javascript api
- 17. 谷歌地圖獲取有城市名稱的經緯度?
- 18. 獲取經緯度範圍內的所有城市
- 19. 如何獲取經緯度的城市信息
- 20. 如何從經度和緯度找到城市?
- 21. 如何從經度和緯度得到城市名稱?
- 22. 從GPS獲取高度/緯度/經度
- 23. Facebook的圖表獲取用戶城市的緯度和經度longetude
- 24. 獲取用戶當前時間在php與他們的緯度/經度/城市
- 25. 如何使用緯度和經度獲取位置名稱或城市?
- 26. 獲取基於城市,郵編或街道名稱的經度和緯度
- 27. 從CLLocation獲取經緯度
- 28. 從json獲取經緯度
- 29. 獲取緯度和經度
- 30. 獲取經度和緯度
不知道sql服務器,但可能使用谷歌地圖api – fersarr