API 将经纬度转换为纽约社区
API to convert lat lon to NYC neighborhood
是否有托管的 API 可以将纬度和经度转换为 Manahttan 街区?
我知道 Zillow 有 shapefile,但我更愿意使用 API。
我看过 few questions. It looks like NYC open data 也有社区信息。
我最接近找到需要经纬度的 API 的时间是 Districts API 但它似乎已被弃用,因为它不在他们的列表中 API 和链接重定向到这些列表。
是否有公开可用的API?或者我是否需要使用 zillow shapefile 创建一个 heroku 应用程序并创建我自己的应用程序?
Google 在其地理编码响应中仅映射 returns 曼哈顿,而不是曼哈顿的特定街区
您的 objective 有几个解决方案,例如 CartoDB 集成 、Bing 位置 API、geopy、geocoder、SmartyStreets API 等。
让我们用 CartoDB:
来探索这个
创建一个包含纽约市经纬度坐标的文件。
使用来自 Zillow
的纽约街区几何文件
将文件上传到 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。参见 this
python包geopy
也值得关注。检查 this
使用 Bing 位置 API 可以获得相同的结果。参见 API
另一个可行的解决方案是根据公开数据构建您自己的API。
勾选geocoder and SmartyStreets
您可以使用 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
中的 this example
是否有托管的 API 可以将纬度和经度转换为 Manahttan 街区?
我知道 Zillow 有 shapefile,但我更愿意使用 API。
我看过 few questions. It looks like NYC open data 也有社区信息。
我最接近找到需要经纬度的 API 的时间是 Districts API 但它似乎已被弃用,因为它不在他们的列表中 API 和链接重定向到这些列表。
是否有公开可用的API?或者我是否需要使用 zillow shapefile 创建一个 heroku 应用程序并创建我自己的应用程序?
Google 在其地理编码响应中仅映射 returns 曼哈顿,而不是曼哈顿的特定街区
您的 objective 有几个解决方案,例如 CartoDB 集成 、Bing 位置 API、geopy、geocoder、SmartyStreets API 等。
让我们用 CartoDB:
来探索这个创建一个包含纽约市经纬度坐标的文件。
使用来自 Zillow
的纽约街区几何文件将文件上传到 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。参见 this
python包geopy
也值得关注。检查 this
使用 Bing 位置 API 可以获得相同的结果。参见 API
另一个可行的解决方案是根据公开数据构建您自己的API。
勾选geocoder and SmartyStreets
您可以使用 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
中的 this example