是否有托管 API 可以将经纬度转换为 Manahttan 社区?
我知道 Zillow 有一个 shapefile 但我更愿意只使用 API。
我看了几个问题。看起来 NYC open data 也有社区信息。
我最接近找到需要 lat lon 的 API 是 times Districts API 但它似乎已被弃用,因为它不在他们的 API 列表中并且链接重定向到这些列表。
是否有公开可用的 API?或者我是否需要使用 zillow shapefile 创建一个 heroku 应用程序并创建我自己的应用程序?
Google 地图仅在其地理编码响应中返回曼哈顿,而不是曼哈顿的特定街区
可以使用MapBox API进行反向地理编码,解析得到的JSON数据,提取Neighborhood名称。 我做了一个小例子,你可以从中得到启发。
代码:
//You can get your access_token if needed from mapbox.com
var access_token = '?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw';
var urlInit = 'https://api.mapbox.com/geocoding/v5/';
var mode = 'mapbox.places/';
var type = '&types=neighborhood';
$('#go').click(function() {
$('#result').html('');
lonlatInput = $('#lonlat').val();
lonlatInput = lonlatInput.split(',');
lonlat = lonlatInput[0].trim() + '%2C' + lonlatInput[1].trim() + '.json';
getNeighborhood(lonlat);
});
function getNeighborhood(lonlat) {
var url = urlInit + mode + lonlat + access_token + type;
$.ajax({
type: 'GET',
url: url,
success: function(rgeo) {
var result = rgeo;
var neighborhood = rgeo.features[0].text;
$('#result').html(neighborhood);
},
error: function(rgeo) {
console.log(rgeo);
}
});
}
#result {
padding: 10px;
font-size: 2em;
color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="-73.945462,40.830182" id="lonlat" />
<button id="go">Geocode</button>
<div id="result"></div>
参见 JsFiddle 中的这个例子
有几个解决方案可以满足您的目标,例如 CartoDB 集成、Bing Location API、geopy、geocoder、SmartyStreets API 等。
让我们使用 CartoDB 来探索这个:
在纽约创建一个包含经度和纬度坐标的文件。
使用来自 Zillow
的 NYC 社区几何文件将文件上传到 Cartodb 并将经度和纬度坐标地理编码为经度和纬度坐标文件中的几何对象。
从文件中运行以下 SQL 查询:
SELECT a.*,
b.neighborhood
FROM inputFileName
as a,
nyc_pediacities_neighborhoods_v3_polygon as b
WHERE ST_Within(a.the_geom,b.the_geom)
我们正在创建两个对象,
inputFile
作为a
和shapefile
作为b
,然后使用WHERE子句将几何相互匹配。
我们正在创建一个新列,其中的行表示同一行的经度和纬度的 NYC 邻域。
只需以理想的格式导出文件并享受信息。
可以使用他们的集成之一轻松自动化该过程。这将紧密充当理想的 API。见这个
python包
geopy
也值得关注。检查这个
使用 Bing Location API 可以获得相同的结果。见API
另一个可行的解决方案是从开放数据构建您自己的API。