Utwórz kafelki wektorowe dla map polimorficznych

14

Ok, prawdopodobnie mój zły, że nie udało mi się dotrzeć do WhereCamp5280 i zapytać maniaków FortiusOne bezpośrednio, ale jaki jest proces tworzenia „kafelków” GeoJSON do użycia w Polymaps?

Przykład Population na stronie polymaps.org zauważa, że ​​dane dla wersji demo działają w Google AppEngine i nawiązują do „toczenia własnych” kafelków wektorowych, ale nie mogę znaleźć więcej informacji ...

Czy ktoś ma jakiś wgląd, którym może się podzielić?

Dzięki!

Dave Bouwman
źródło

Odpowiedzi:

12

TileStache na pewno to zrobi, szczególnie dostawca PostGeoJSON w kolekcji dodatkowych dostawców . Główną różnicą między tym a tym, co zrobiliśmy dla przykładów Polymaps, jest przycinanie wielokątów - po zobaczeniu, jak duża Alaska może uzyskać przy wyższych poziomach powiększenia, obciąliśmy wszystkie funkcje w przykładach Polymaps, aby skrócić czas ładowania i tak dalej. Udostępniliśmy je również z AppSpot, aby umożliwić dodanie nagłówka Access-Control-Allow-Origin dla uprawnień między domenami.

PostGeoJSON nie wycina się z pudełka, ale jak napisano w dokumentacji, chętnie rozwinę kod, jeśli będzie zainteresowanie!

Aktualizacja: Wygląda na to, że od wersji Tilestache 1.9.0 dostawca Vector wydaje się być faworyzowany w stosunku do dostawcy PostGeoJSON .

Michał Migurski
źródło
2
Patrz komentarz poniżej: Zaktualizowałem dostawcę PostGeoJSON, aby był bardziej przyjazny dla Polymaps
Michał Migurski
4

Zdecydowanie zastanawiałem się nad tym sam, ponieważ chciałbym również skorzystać z Tile5 (http://tile5.org/). Widziałem już Mike'a Bostocka (który współpracował ze Stamenem przy produkcji Polymap), który odpowiedział na Twitterze na ten temat. Oto link:

http://twitter.com/#!/mbostock/status/27659816563

Na pewno chciałbym znaleźć fajne samodzielne rozwiązanie problemu. Kilka produktów, które wyglądają jak kroki we właściwym kierunku to:

  • Tilestache (http://tilestache.org/)
  • Geocouch (https://github.com/vmx/couchdb)

Z zainteresowaniem obejrzę to pytanie.

Twoje zdrowie,

Damon.

Damon Oehlman
źródło
Najwyraźniej mogę skomentować tylko własną odpowiedź: /
Damon Oehlman
@Michal - Z pewnością chciałbym zobaczyć dodawanie obcinania do TileStache - czy jest jakaś możliwość obsługi parametru wywołania zwrotnego? Wiem, że JSONP nie odpowiada wszystkim, ale myślę, że
przydałby się
Zdecydowanie mogę dodać wycinek do TileStache - umieści go na liście! Mniej pewny co do wywołania zwrotnego, głównie dlatego, że wyniki powinny być całkowicie buforowalne, a wywołania zwrotne je przerywają. Może robię coś specjalnego oprócz JSON, ponieważ jest to tak powszechna potrzeba ...
Michał Migurski,
Dobra uwaga na buforowanie z przodu JSONP. JSONP nadal powinien być dość buforowalny, biorąc pod uwagę wywołania zwrotne w mapie URL bezpośrednio do opakowania funkcji na wyjściu. Zdecydowanie spowodowałoby to wzdęcie pamięci podręcznej, co byłoby bólem. Myślę, że mógłbym rozwidlić się na Github i zagrać (jeśli czas na to pozwala) :)
Damon Oehlman
W porządku, dodałem przycinanie jako opcję w TileStache: tilestache.org/doc/…
Michał Migurski
2

Możesz użyć ogr2ogr, aby utworzyć statyczny plik GeoJSON do udostępniania , ale wydaje się, że na razie musisz napisać własne usługi sieciowe, jeśli chcesz włączyć przycinanie lub dowolną inną funkcję dynamicznego adresu URL (poziom powiększenia itp.) , i nie znam żadnego narzędzia do kafelkowania, które stworzyłoby pamięć podręczną kafelków zestawu danych, ale znowu można to dość łatwo zrobić za pomocą procesu wsadowego i różnych -clip*opcji ogr2ogr . Chociaż w przypadku danych wektorowych wydaje się to nie mieć sensu, ponieważ przecinają one wielokąty na kawałki na płytkę, gdy się nakładają, prawdopodobnie lepiej byłoby poszukać pola ograniczającego.

Jason Scheirer
źródło
2

Dave - Wydaje się, że jest tutaj luka do wypełnienia. Przyjemny wolny nóż do cięcia płytek Json byłby świetny (i dobry dla tych, którzy nie używają tilestache). Sprawdź moduł Python Bloch (za pośrednictwem M. Migurskiego): https://github.com/migurski/Bloch (pomyśl mapshaper.org w wierszu poleceń i python).

Jak zauważył Jason, proces kafelkowania danych jest dość prosty i można go osiągnąć dość szybko, używając czegoś takiego jak gdal2tiles jako punktu początkowego i przekształcając go w świat wektorowy.

Chris


źródło