使用QGIS映射一百万个点


9

我正在尝试在美国映射不超过元数据的,具有超过一百万纬度/经点的CSV。我从未尝试过映射这么多数据,并且想知道我应该采取什么步骤。我知道QGIS的数据太多,所以我尝试将其拆分为100,000行CSV,但随后得到了很多我不知道该怎么处理的文件。我认为最好是按人口普查汇总点,但是不知道使用Javascript(我从未使用过Python)或命令行工具的最佳方法吗?有什么建议么?


2
使用PostGIS,您可以轻松地将CSV加载到数据库中,然后将经/纬度列转换为几何,就可以完成!然后,您就可以在PostGIS中按人口普查块进行所有汇总/汇总...您打算对Turf做什么?
DPSSpatial 2015年

2
嗨,欢迎来到GIS stackexchange。我建议您看一下PostgreSQL / PostGIS,这是一个在空间上启用的数据库引擎,可以与QGIS很好地交互。一旦将数据加载到数据库中,例如将其合并并汇总到人口普查区域或对其进行聚类将变得相对简单。
拉斐尔2015年

我认为Raphael的评论是迄今为止最好的“答案”。一旦将它们加载到PostGIS中,就可以轻松使用一百万个点,并且QGIS-PostGIS接口工具非常好。
亚历山大

感谢@mapBaker和@raphael!我没有考虑过使用那样的Postgis。我将CSV导入QGUS。是否有将其转换为PostGIS的方法?
user63623

@raphael您知道有超过100万条记录时将X,Y转换为PostGIS中的几何的好方法吗?我尝试使用ST_MakePoint方法复制此内容,但内存被炸毁-ST_GeomFromText可以使用现有的X和Y列吗?
DPSSpatial 2015年

Answers:


9

我建议使用PostgreSQL / PostGIS,因为QGIS本身就支持PostgreSQL / PostGIS,它具有一些方便的内置函数来与其他空间数据(如人口普查区域)连接,并且数据库的使用应限制大型数据集的内存问题。我建议的步骤如下。要执行SQL命令,可以使用PGAdmin或QGIS,前者将为您提供更多有关查询的错误信息,后者将使您将查询结果作为地图上的图层加载。要访问后者,请访问Database > DB Manager > DB Manager并单击第二个按钮。

  1. 开始设置PostGIS以及快速安装程序
  2. 在QGIS SQL窗口 PGAdmin的SQL窗口中使用CREATE TABLE命令(示例)在数据库中创建表
  3. 通过右键单击PGAdmin中的表并单击(使用COPY sql命令 PGAdmin的内置导入功能导入csv)Import...(后者可能很微妙,因此建议对较大的数据集使用COPY)。
  4. 通过在PGAdmin或QGIS SQL窗口中执行以下SQL,将几何列添加到表中。

    ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326);
    
  5. 使用类似的方法创建点几何

    UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint( x, y), 4326);
    
  6. 通过使用类似以下内容的SELECT语句来显示数据的子集LIMIT 50000

  7. 或加入类似的人口普查数据


    从普查中选择c.gid,c.geom c
    在ST_Within(yourdata.geom,c.geom)上内联您的数据

函数参考:
ST_Within
ST_MakePoint
ST_SetSRID


谢谢回复。我尝试了步骤3,但无法在QGIS中编辑表格。还有另一种无需使用插件即可添加列的方法吗?
user63623

@ user63623我更新了答案,其中包括一个应解决您的问题的额外步骤。
拉斐尔2015年

谢谢,我认为在1和2之间缺少一个步骤。将csv层导入QGIS时,需要将其另存为shp文件来创建数据库。对?当我尝试时,它会冻结。我也尝试使用PGAdmin,但是找不到导入功能。
user63623

在PGAdmin中,您首先必须使用这样的sql查询创建表:stackoverflow.com/questions/9826833/create-table-in-postgresql,并正确定义csv中的所有列。然后,您可以右键单击表名>,Import...以访问导入向导,或使用COPY命令 postgresql.org/docs/current/static/sql-copy.html我将更新答案
raphael

3

我最近使用了从CSV导入的140万个点的数据集。我确保删除了csv中所有不相关的字段。即使某些过程需要一些时间来执行,它对我来说也很好用。(QGIS 2.12、64位Windows 7、8 Gb RAM)


2

R候选者的伪代码:

library(rgdal) ## for spatial export
library(readr) ## for fast file read

x <- read_csv("file.csv") 
names(x)  ## some as yet unknown columns

coordinates(x) <- c("x", "y")  ## your coordinate names may be different

writeOGR(x, ".", layer = "filepoints", driver = "MapInfo File")

这将在您可以使用QGIS读取的工作目录中给您一个filepoints.tab。或选择“ ESRI Shapefile”以创建filepoints.shp或所需的任何格式。QGIS与rgdal一样,也使用GDAL,因此存在很多重叠。有类似的Python机制。

由于您没有任何元数据,因此可以在分配坐标(x)以设置proj4string(x)<-CRS(“ + proj = something + etc”)之后进行设置,但是我们只能猜测您的数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.