gpt4 book ai didi

python - mapnik 标记并不总是出现

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:37 32 4
gpt4 key购买 nike

我在 Ubuntu 16.04 上使用 Python 的 mapnik 2.2.0。我从 csv 文件加载 OSM 数据和一层点。 csv 文件中的点的格式为 epsg:4326。

根据 map 的大小,不同的点会出现或消失。未出现的点(取决于 map 大小)位于出现的点之间。

例如,在 1024x1024 map 中,下面列表中的点 1、5 和 8 不会出现,但它们会出现在 640x480 map 中。

我的代码和示例点如下。

感谢任何帮助。

谢谢。

dl

点.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")

640x480 1024x1024

最佳答案

我刚刚处理了一个非常类似的问题,即标记无法呈现。我注意到一个趋势,即那些未渲染的标签与道路名称标签相冲突。我怀疑您可能在使用其他功能标签时遇到类似的问题(例如“ jackson 维尔”文本左侧的点,较大的 map 呈现的机场可能会发生冲突)。

对我来说,解决方案是在图层对象上将“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

希望这有帮助!

问候,克里斯

关于python - mapnik 标记并不总是出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859062/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com