2

对不起打扰。我无法渲染我的地图,我不知道为什么......

我使用 ogr 读取了一个 csv 文件,该文件使用了我创建的与 csv 关联的 .vrt 文件:

然后,我有一个简单的代码来渲染我的地图,但我无法正常工作:创建了一个背景为空的地图,上面什么都没有......

我收到警告,但我认为这是正常的:

Warning 1: The 'LON' and/or 'LAT' fields of the source layer are not declared as numeric fields,
so the spatial filter cannot be turned into an attribute filter on them

你有想法吗 ?

谢谢!

我的.csv(称为ZZZ.csv),只是开始和有趣的领域:

RecordID,VehId,DateTime,LAT,LON
0,2232,2012-04-07 18:54:39,32.801926,-116.871742
0,2232,2012-04-07 18:54:40,32.801888,-116.871727
0,2232,2012-04-07 18:54:41,32.801849,-116.871704

我的.vrt

<OGRVRTDataSource>
<OGRVRTLayer name="ZZZ">
    <SrcDataSource>ZZZ.csv</SrcDataSource>
    <GeometryType>wkbPoint</GeometryType>
    <LayerSRS>WGS84</LayerSRS>
    <GeometryField encoding="PointFromColumns" x="LON" y="LAT"/>
</OGRVRTLayer>
</OGRVRTDataSource>

我用来渲染卡片的python模块:“”“module mapniktest”“”

import mapnik
#Defining the envelope
MIN_LAT = 30
MAX_LAT = +35
MIN_LON = -120
MAX_LON =-110
MAP_WIDTH = 1000
MAP_HEIGHT = 500

#defining the datasource: the .vrt above
datasource = mapnik.Ogr(file="ZZZ.vrt",layer = "ZZZ")

#Creating layer, rules and styles
layer = mapnik.Layer("ZZZ")
layer.datasource = datasource
layer.styles.append("LineStyle")
stroke = mapnik.Stroke()
stroke.color = mapnik.Color("#008000")
stroke.add_dash(50, 100)
symbol = mapnik.LineSymbolizer(stroke)

rule = mapnik.Rule()
rule.symbols.append(symbol)
style = mapnik.Style()
style.rules.append(rule)
print style

#creating the map
map = mapnik.Map(MAP_WIDTH, MAP_HEIGHT, "+proj=longlat +datum=WGS84")
map.append_style("LineStyle", style)
map.background = mapnik.Color("#8080a0")
map.layers.append(layer)

#displaying the map
map.zoom_to_box(mapnik.Envelope(MIN_LON, MIN_LAT, MAX_LON, MAX_LAT))
mapnik.render_to_file(map, "map.png")

谢谢!!!!

4

1 回答 1

3

问题是您正在应用LineSymbolizer点数据。您需要应用 aPointSymbolizer或 aMarkersSymbolizer到点数据。

此外,Mapnik 2.1 及更高版本支持直接从 CSV 文件读取,因此您无需使用 VRT 和 OGR 插件,尽管两者应该类似地工作。

于 2013-05-16T14:50:27.803 回答