将经纬度转换为纽约社区的 API

问题描述 投票:0回答:2

是否有托管 API 可以将经纬度转换为 Manahttan 社区?

我知道 Zillow 有一个 shapefile 但我更愿意只使用 API。

我看了几个问题。看起来 NYC open data 也有社区信息。

我最接近找到需要 lat lon 的 API 是 times Districts API 但它似乎已被弃用,因为它不在他们的 API 列表中并且链接重定向到这些列表。

是否有公开可用的 API?或者我是否需要使用 zillow shapefile 创建一个 heroku 应用程序并创建我自己的应用程序?

Google 地图仅在其地理编码响应中返回曼哈顿,而不是曼哈顿的特定街区

google-maps heroku geocoding
2个回答
5
投票

可以使用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 中的这个例子


4
投票

有几个解决方案可以满足您的目标,例如 CartoDB 集成Bing Location APIgeopygeocoderSmartyStreets 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

检查地理编码器SmartyStreets

© www.soinside.com 2019 - 2024. All rights reserved.