Kendi OSM veri sunucumla OpenLayers


9

PostGIS'i kurarak, Planet.osm veri anlık görüntüsünü (birkaç gün sürdü) içe aktararak ve Mapnik / cascadenik vb. Ayarlayarak kendi OSM veritabanımı / döşeme sunucumu kurma sürecinden geçtim. ile örnek fayans generate_image.pyve elle fayans setleri üretebilir generate_tiles.py. Cascadenik kullanarak kendi özel stil şablonumu oluşturmak ve ondan karolar üretmek için iyi bir zaman harcadım, ki oldukça mutluyum.

Yeni sorunum, aynı sunucuda çalıştırmak için OpenLayers ile örnek bir kaygan harita oluşturmak ...

Ben biraz yapılandırılmış ve çalışıyor var; kurulum Apache, mod_python, TileCache, vb Bu kaygan harita içine fayans yapar, ama ben tüm parametreleri OpenLayers vidalı var düşünüyorum. Şu anda sahip olduğum şey (tüm yakınlaştırma düzeylerinde boş okyanusa benzeyen şey):

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <script src="http://openlayers.org/api/OpenLayers.js"></script> 
    <script type="text/javascript">
        var map;

        function init() {
                map = new OpenLayers.Map ("map", {
                        maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                        maxResolution: 156543.0399,
                        numZoomLevels: 19,
                        units: 'm',
                        projection: new OpenLayers.Projection("EPSG:900913"),
                        displayProjection: new OpenLayers.Projection("EPSG:4326")
                } );

                layer = new OpenLayers.Layer.TMS( "OSM", "/tilecache/tilecache.py/", {layername: 'osm', type: 'png'} );
                map.addLayer(layer);
                map.addControl(new OpenLayers.Control.PanZoomBar());
                map.setCenter(new OpenLayers.LonLat(-82.686195, 27.84788), 12)
        }
        </script> 
  </head>
<body onload="init()">
    <div id="map"></div>
</body>
</html>

Katman seçenekleri parametreleriyle ilgili bir sorun olduğunu hissediyorum, ancak Mapnik tarafından oluşturulan genel OSM döşemelerini görüntülemek için kullanılacak standart parametreleri açıklayan iyi belgeler bulamıyorum ...

Eksik olduğum bu soruna neden olacak bir şey var mı?

İşte ben de tilecache.cfg var:

[cache]
type=Disk
base=/tmp/tilecache
[osm]
type=Mapnik
spherical_mercator=true
mapfile=/home/user/mapfile.xml

Yanıtlar:


8

Bir not: mod_python üzerinden mod_wsgi öneririm. Apache prefork'u mod_python ile veya (ideal olarak) mod_wsgi ile daemon modunda thread = 1 ve process = N ile (N'nin mantıksal işlemci sayısıyla en iyi eşleştiği yerde) kullanılması önemlidir. arka plan modundaki mod_wsgi, Apache prefork veya worker ile kullanılabilir. Bunun nedeni, TileCache'nin mapnik.Map nesnesini önbelleğe alması ve bu nedenle iş parçacıkları arasında paylaşılmamasıdır. Mapnik çekirdeği mükemmel bir iş parçacığı güvenliği sağlar, ancak çok iş parçacıklı sunucu uygulamalarının her iş parçacığı için bir mapnik.Map nesnesi örneği oluşturması gerekir. Mod_tile ve Paleoserver çok iş parçacıklı oluşturmayı bu şekilde destekleyen uygulamalara örnektir, ancak TileCache bunu desteklemez. Ancak, TileCache + Mapnik + mod_wsgi daemon modunu thread = 1 ile çalıştırmak iyi bir yoldur,

Katman yapılandırmanıza göre "serviceVersion" eklemeyi deneyin:

var tms = yeni OpenLayers.Layer.TMS ("TileCache Mapnik Katmanı", url, {serviceVersion: "1.0.0", layername: "osm", şunu yazın: "png"});


Teşekkürler! Bu sorunu çözdü, ancak şimdi setCenter çalışmıyor - Sanırım doğru zoom seviyesine gidiyor, ancak ll = (0, 0) (Afrika dışı) merkezli ... Muhtemelen metre ve dec . derece mi? Ayrıca, tavsiye için teşekkürler re: mod_wsgi. Bu şekilde kuracağım ve daha iyi performans elde edip edemeyeceğimi göreceğim. 6 çekirdekli ve 12 GB RAM'li bir VM'de çalışıyorum, bu yüzden bazı hızlı oluşturma / önbellekleme için bol olmalı.
colemanm

2
OSM koordinatları metre cinsinden olduğundan, merkezi öngörülen metre cinsinden ayarlamanız gerekir. Bkz. Docs.openlayers.org/library/… .
Christopher Schmidt

Teşekkürler, benim sorunum gibi görünüyor - setCenter'ı metre cinsinden koordinatlarla kullanırken işe yarıyor.
colemanm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.