在QGIS 1.8中,我使用openstreetmap插件从服务器请求数据,或打开一个.osm XML文件,该文件在QGIS中产生了3层(多边形,折线和点)。

或接受严重影响我正在处理的新映射区域的64位错误),但是如何在QGIS 2.x中做到这一点?

我找不到有关此文件的任何更新文档。我被卡住了。有一个用于加载XML文件的菜单选项,但是它会生成一个spacespaceite数据库,当我尝试将其添加为spacespaceite图层时,显然只有非几何表。节点ID,方式等,但我不知道如何实际使用它们。

我还尝试从.osm XML文件中添加矢量层。我得到一个gpsbabel窗口,该窗口什么也不显示,最后在QGIS中显示一条无效的数据源消息。

评论

汤姆,我写了一个分步说明,以在QGIS中获取OSM数据。希望对于初学者来说,这很简单。 qgistutorials.com/en/docs/downloading_osm_data.html

这是一种体面的样式(带有不错的设置说明):github.com/yannos/Beautiful_OSM_in_QGIS它用于PostGIS(而非Spatialite)。

尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。 -来自评论

#1 楼

QGIS 3.x的更新:由于许多未解决的错误,QGIS 3中删除了来自QGIS 2的旧OSM导入程序。 QuickOSM插件还可以读取osm原始文件。您可以改用用户图层-添加图层-添加矢量图层。在这种情况下,如http://gdal.org/drv_osm.html

所述,将使用GDAL打开OSM数据。在QGIS 2.x中,涉及3个步骤。

获取OSM文件,您可以使用josm或立交桥或任何其他来源获取它。它必须是有效的xml。您也可以从qgis Vector> OpenStreetMap> Download OSM Data菜单下载它,但是有时它不会给出结果。我建议使用立交桥涡轮。我认为这是拓扑。最后,您可以通过“向量”>“ OpenStreetMap”>“将拓扑导出到Spatialite”来获取数据,在这里您需要提供上面制作的db文件,就像在qgis 1.8中一样,您可以选择点,线条或多边形。在“导出的标签”部分的下方,您可以加载文件中包含的所有标签,并仅选择所需的标签。这是1.8版中的附加功能。 .org / wiki / QGIS#QGIS2_OpenStreetMap_Vectors

评论


这感觉非常复杂,但确实可以。为了清楚起见,在第3步之后,您仍然需要添加spacespaceite图层,连接到创建的db,然后选择在第3步中创建的图层以最终查看结果。谢谢你的帮助!

– Laurent S
13-10-4在6:18



对我来说,图层是自动创建和添加的。与数据库的连接已在步骤2中建立(除非您取消选中它)。

– AndreJ
13-10-5在12:40

#2 楼

我发现使用插件下载OSM数据并进行导入和导出动作非常繁琐。这就是为什么我写了一个不同的解决方案的原因:http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

摘要:

原始OSM文件可能非常庞大。因此,绝对推荐下载压缩的二进制.pbf格式而不是XML .osm格式。
作为下载源,我建议使用Geofabrik。

对于第一步预处理:提取感兴趣的区域,我们可以使用Osmosis: ,我发现如果将.osm文件转换为spacespaceite,性能和对属性的访问将大大提高。

C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm

在QGIS中,我们可以使用“添加SpatiaLite层”来加载点,线和多面体。 :


没有陆地多边形。而是有“海岸线”线要素。
大多数河流多边形都丢失了。而是具有“河岸”线要素。

创建丢失的河流多边形并不是什么大问题:


选择waterway = riverbank。 br />使用处理工具箱中的“多边形”工具可根据所选河岸线所包围的区域自动创建多边形。 (请注意,默认情况下,“处理”仅对所选功能起作用,但是可以在“处理”设置中更改此设置。)

创建陆地多边形(或由于某些原因而更喜欢海多边形)的过程要复杂得多,因为在大多数情况下,由于我们经常在主要大陆上砍一块土地,所以海岸线不会关闭。因此,在使用多边形工具之前,我们必须关闭该区域。为此,我建议首先使用“ other_tags”(如“%” natural” =>“ coastline”%')选择海岸线,然后从该选择中创建一个新图层(将选择另存为…)并进行编辑(不要忘记以启用捕捉!)添加线条以关闭该区域。然后多边形化。

评论


如果您运行的是相当可靠的计算机,并且希望ogr2ogr阶段在下一个冰河世纪之前完成,请添加--config OGR_SQLITE_SYNCHRONOUS OFF。

–scruss
2014年11月8日12:49

#3 楼

如果您不喜欢该插件,请使用Overpass API提取所需的OSM数据,然后使用Add Vector Layer(启用All files过滤器)将结果添加到QGIS。

QGIS 2.0使用GDAL 1.10的ogr2ogr OSM importer做得很好。

目前,对关系的支持似乎比插件要好。

请确保您完全下载了方式和关系,仅此而已方式的节点以及关系的所有成员及其所有节点。

#4 楼

您知道,您不需要将数据放入SpatialLite。您可以:


下载数据(矢量> OpenStreetMap>下载数据,创建一个.osm文件)。
将数据(.osm文件)加载为矢量层(图层>添加矢量图层)。选择文件后,它将询问您要添加的图层(因为GDAL为每种类型制作单独的文件:点,线,多线,多多边形,GeomCollection)。选择所需的内容并加载。


评论


这以某种方式起作用,但是似乎不能基于标签来分离图层。因此,基本上道路和河流最终位于同一线层中,如果您想对结果数据进行分析,这并没有太大帮助。

– Laurent S
2014年4月1日19:55

从您的问题尚不清楚,一旦导入数据,您将如何处理数据。当然,您可以从QGIS中的数据中选择所需的功能。如上所述,如果您知道只需要某些数据(并且不是很大的区域),那么使用Overpass下载数据可能会更好,因为您可以预选某些功能。我发现Overpass Turbo是开发查询的一种用户友好方式。这是边界框中所有高速公路的示例:overpass-turbo.eu/s/2VX

– Neuhausr
2014年4月2日在14:26