2017-03-03 22 views
6

Czy istnieje hostowany interfejs API, który konwertuje szerokość i długość geograficzną na dzielnicę Manahttan?API do konwersji lon lon na okolice Nowego Jorku

Wiem, że Zillow ma shapefile, ale wolę po prostu użyć API.

Spojrzałem na fewquestions. Wygląda na to, że NYC otwarty data ma również informacje o okolicy.

Najbliżej doszedłem do znalezienia API, które zajmuje dużo czasu, jest czasem Districts API, ale wydaje się być przestarzałe, ponieważ nie ma ich na liście API i linki przekierowują do tych list.

Czy istnieje publicznie dostępny interfejs API? Czy muszę utworzyć aplikację heroku z plikiem shape zillow i stworzyć własną?

Google maps tylko zwraca Manhattan w swej odpowiedzi geokodowania, a nie konkretnej dzielnicy na Manhattanie

+0

Co masz na myśli przez "konkretnej dzielnicy" na Manhattanie? Upper East Side? – geocodezip

+0

@geocodezip yes. – user2954587

Odpowiedz

2

Można użyć MapBox API na odwrotnej geokodowanie i analizowania danych JSON uzyskane wyodrębnić nazwę sąsiedztwa. Zrobiłem mały przykład, z którego możesz zainspirować.

Kod:

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

Zobacz this example w JsFiddle

+0

Przepraszam, nie widziałem tego wcześniej, aby dać pełną nagrodę! @mydsi – user2954587

3

Istnieje kilka rozwiązań do celu, takich jak integracji CartoDB, Bing Lokalizacja API, geopy, geocoder, SmartyStreets API i inne.

Zajmijmy to za pomocą CartoDB:

Utwórz plik o długości i szerokości geograficznej koordynuje w Nowym Jorku.

Użyć NYC plik dzielnice geometria z Zillow

przesłać pliki do Cartodb i geoencode długości i szerokości geograficznej koordynuje jako obiekt geometrii w swojej długości i szerokości geograficznej pliku współrzędnych.

Uruchom następujące zapytanie SQL z pliku:

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

Tworzymy dwa obiekty, inputFile jako a i shapefile jako b, a następnie dopasować geometrię przed siebie z klauzuli WHERE.

Tworzymy nową kolumnę z rzędami oznaczającymi sąsiedztwo Nowego Jorku o długości i szerokości geograficznej tego samego rzędu.

Po prostu wyeksportuj plik w pożądanym formacie i ciesz się informacjami.

Można łatwo zautomatyzować proces za pomocą jednej z jego integracji. Będzie to ściśle działać jako idealne API. Zobacz this

Pakiet python geopy również zasługuje na uwagę. Check this

Można osiągnąć ten sam wynik za pomocą interfejsu API Bing Location.Zobacz API

Innym wykonalnym rozwiązaniem jest zbudowanie własnego API z otwartych danych.

Sprawdź geocoder i SmartyStreets

Powiązane problemy