我在Ubuntu 16.04上使用Python中的mapnik 2.2.0。我从csv文件加载OSM数据和一层点。csv文件中的点位于epsg:4326中。
根据地图的大小,不同的点会出现或消失。未显示的点(取决于贴图大小)位于显示的点之间。
例如,在1024x1024地图中,以下列表中的点1、5和8不会出现,但会出现在640x480地图中。
我的代码和样本点如下。
任何帮助都是非常感谢的。
谢谢。
dl
points.csv
经度,纬度
-81.36267786,31.17942128
-81.34324795,31.27446072
-81.47343063,31.24168062
-81.55010796,30.34051442
-81.80767273,30.31021431
-81.37953944,30.19135471
-81.7932574,30.19754696
-81.76737595,30.13418484
-81.84996796,30.08385658
-81.58109463,30.50306859
-81.49115618,30.51390896
-81.5587192,30.63135991
-81.57580261,31.25126381
-81.29788475,29.8236434
#!/usr/bin/env python2
import mapnik
mapfile = '/etc/mapnik-v2.2.0/config/mapnik_osm.xml'
#m = mapnik.Map (640, 480)#m = mapnik.Map (1280,960) m= mapnik.Map (1024,1024)
m.background = mapnik.Color ('rgb (0,0,0,0)')
m.aspect_fix_mode = mapnik.aspect_fix_mode.GROW_CANVAS
mapnik.load_map (m, mapfile)
style = mapnik.Style()
rule1 = mapnik.Rule()
marker_symbolizer = mapnik.MarkersSymbolizer()
marker_symbolizer.allow_overlap = False
marker_symbolizer.opacity = 1.0
rule1.symbols.append(marker_symbolizer)
style.rules.append(rule1)
m.append_style('GPS_tracking_points', style)
layer = mapnik.Layer('coordinates', '+proj=latlong +datum=WGS84')
layer.datasource = mapnik.CSV(file="points.csv", layer_by_index=0)
layer.styles.append('GPS_tracking_points')
m.layers.append(layer)
west, south, east, north = -82.299335015,29.8236434,-80.848517695,31.27446072
bbox = (mapnik.Box2d (west, south, east, north))
merc = mapnik.Projection('+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over')
longlat = mapnik.Projection('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')
transform = mapnik.ProjTransform(longlat,merc)
merc_bbox = transform.forward(bbox)
m.zoom_to_box(merc_bbox)
mapnik.render_to_file(m, "map_example.png")


发布于 2017-03-18 09:52:48
我刚刚处理了一个非常类似的问题,标记不会渲染。我注意到了一种趋势,即那些没有渲染与道路名称标签冲突的标签。我怀疑您可能在其他功能标签上遇到了类似的问题(例如,"jacksonville“文本的左边的点,较大的地图渲染了一个机场,这可能是错误的)。
对我来说,解决方案是在layer对象上将'clear_label_cache‘设置为True。即:
layer = mapnik.Layer('coordinates', '+proj=latlong +datum=WGS84')
layer.datasource = mapnik.CSV(file="points.csv", layer_by_index=0)
layer.clear_label_cache = True
...参考:http://mapnik.org/docs/v2.0.1/api/python/mapnik._mapnik.Layer-class.html#clear_label_cache
希望这能有所帮助!
问候你,克里斯
https://stackoverflow.com/questions/42859062
复制相似问题