2017-03-03 5 views
6

Existe-t-il une API hébergée qui convertit une latitude et une longitude en un quartier de Manahttan?API pour convertir lat lon en voisinage NYC

Je sais que Zillow a un shapefile mais je préférerais de loin utiliser une API. J'ai regardé un fewquestions. Il semble que NYC ouvert data a également des informations de voisinage. Le plus proche que je suis venu à trouver une API qui prend lat lon est le temps Districts API mais il semble être obsolète car ce n'est pas sur leur liste d'API et les liens rediriger vers ces listes.

Existe-t-il une API disponible publiquement? Ou dois-je créer une application heroku avec un shapefile zillow et créer le mien?

Google maps ne retourne manhattan dans sa réponse de géocodage, pas un quartier spécifique à Manhattan

+0

Que voulez-vous dire par le "quartier spécifique" à Manhattan? Upper East Side? – geocodezip

+0

@geocodezip oui. – user2954587

Répondre

2

Vous pouvez utiliser MapBox API pour le géocodage inverse et analyser les données JSON obtenues pour extraire le nom du quartier. J'ai fait un petit exemple que vous pouvez inspirer.

code:

//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>

Voir this example dans jsFiddle

+0

désolé je ne l'ai pas vu si tôt pour donner pleine générosité! @mydsi – user2954587

3

Il y a deux solutions à votre objectif tels que intégrations CartoDB, Bing Localisation API, geopy, geocoder, API SmartyStreets et autres.

Explorons ce en utilisant CartoDB:

Créer un fichier avec les coordonnées longitude et latitude à New York.

Utilisez un fichier géométrie NYC quartiers de Zillow

télécharger les fichiers à Cartodb et geoencode la longitude et la latitude coordonnées comme un objet géométrique dans votre longitude et la latitude fichier de coordonnées.

Exécutez la requête SQL suivante à partir du fichier:

SELECT a.*, 
     b.neighborhood 
FROM inputFileName 
as a, 
    nyc_pediacities_neighborhoods_v3_polygon as b 
WHERE ST_Within(a.the_geom,b.the_geom) 

Nous créons deux objets, inputFile comme a et shapefile comme b, correspondent alors les géométries les uns aux autres avec la clause WHERE.

Nous créons une nouvelle colonne avec des lignes indiquant le voisinage NYC de la longitude et de la latitude de la même ligne. Il suffit d'exporter le fichier dans un format souhaitable et de profiter de l'information.

On peut facilement automatiser le processus en utilisant l'une de leurs intégrations. Cela va agir comme une API idéale. Voir this

Le paquet python geopy mérite également l'attention. Vérification this

Vous pouvez obtenir le même résultat en utilisant l'API de localisation Bing.Voir API

Une autre solution possible consiste à construire votre propre API à partir des données ouvertes.

Vérifier geocoder et SmartyStreets