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 位置 APIgeopygeocoderSmartyStreets 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 作为 ashapefile 作为 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