将lat lon转换为NYC邻居的API

时间:2017-03-03 16:25:02

标签: google-maps heroku geocoding

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

我知道Zillow有shapefile,但我更愿意使用API​​。

我看了few questions。看起来纽约开放data也有社区信息。

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

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

谷歌地图只返回曼哈顿的地理编码响应,而不是曼哈顿的特定社区

2 个答案:

答案 0 :(得分:4)

您的目标有几个解决方案,例如 CartoDB集成 Bing Location API geopy 地理编码器 SmartyStreets API 等。

让我们使用 CartoDB

进行探讨

在NYC中创建一个经度和纬度坐标的文件。

使用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)

我们正在创建两个对象,inputFileashapefileb,然后将几何与WHERE子句相互匹配。

我们正在创建一个新列,其中的行表示同一行的经度和纬度的NYC邻域。

只需以理想的格式导出文件并享受信息。

可以使用其中一个集成轻松实现流程自动化。这将成为理想的API。见this

python包 geopy 也值得关注。查看this

使用Bing Location API可以获得相同的结果。见API

另一个可行的解决方案是从开放数据构建您自己的 API

检查geocoderSmartyStreets

答案 1 :(得分:2)

您可以使用MapBox API进行反向地理编码,并解析获取的JSON数据以提取邻居名称。 我做了一个小例子,你可以从中激励。

代码:



//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>
&#13;
&#13;
&#13;

请参阅JsFiddle中的this example