我正在尝试在美国映射不超过元数据的,具有超过一百万纬度/经点的CSV。我从未尝试过映射这么多数据,并且想知道我应该采取什么步骤。我知道QGIS的数据太多,所以我尝试将其拆分为100,000行CSV,但随后得到了很多我不知道该怎么处理的文件。我认为最好是按人口普查汇总点,但是不知道使用Javascript(我从未使用过Python)或命令行工具的最佳方法吗?有什么建议么?
我正在尝试在美国映射不超过元数据的,具有超过一百万纬度/经点的CSV。我从未尝试过映射这么多数据,并且想知道我应该采取什么步骤。我知道QGIS的数据太多,所以我尝试将其拆分为100,000行CSV,但随后得到了很多我不知道该怎么处理的文件。我认为最好是按人口普查汇总点,但是不知道使用Javascript(我从未使用过Python)或命令行工具的最佳方法吗?有什么建议么?
Answers:
我建议使用PostgreSQL / PostGIS,因为QGIS本身就支持PostgreSQL / PostGIS,它具有一些方便的内置函数来与其他空间数据(如人口普查区域)连接,并且数据库的使用应限制大型数据集的内存问题。我建议的步骤如下。要执行SQL命令,可以使用PGAdmin或QGIS,前者将为您提供更多有关查询的错误信息,后者将使您将查询结果作为地图上的图层加载。要访问后者,请访问Database > DB Manager > DB Manager
并单击第二个按钮。
CREATE TABLE
命令(示例)在数据库中创建表Import...
(后者可能很微妙,因此建议对较大的数据集使用COPY)。通过在PGAdmin或QGIS SQL窗口中执行以下SQL,将几何列添加到表中。
ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326);
使用类似的方法创建点几何
UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint( x, y), 4326);
通过使用类似以下内容的SELECT
语句来显示数据的子集LIMIT 50000
或加入类似的人口普查数据
从普查中选择c.gid,c.geom c
在ST_Within(yourdata.geom,c.geom)上内联您的数据
函数参考:
ST_Within
ST_MakePoint
ST_SetSRID
Import...
以访问导入向导,或使用COPY命令 postgresql.org/docs/current/static/sql-copy.html我将更新答案
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”)之后进行设置,但是我们只能猜测您的数据。