NE의 sqlite 파일은 기본 공간적 형상이 아니라 FDO-OGR 형식입니다. 육체 노동을 기꺼이 원한다면 다음은 공간 데이터베이스로 변환하는 방법입니다.
먼저 새로운 빈 공간 라이트 데이터베이스 ( "nev.sqlite"라고 함)를 만든 다음 별도의 터미널 세션에서 공간을 사용하여 원래 natural_earth_vector.sqlite를 엽니 다. (최신 버전 4.1을 사용했습니다. 이전 버전에서 작동하는지 확실하지 않습니다). sqlite attach
함수를 사용하여 새 nev.sqlite 테이블에 연결하고 새 데이터베이스에 원하는 테이블의 사본을 작성하십시오.
그래서:
micha@Wheezy:~$ spatialite natural_earth_vector.sqlite
SpatiaLite version ..: 3.0.0-beta Supported Extensions:
- 'VirtualShape' [direct Shapefile access]
- 'VirtualDbf' [direct DBF access]
- 'VirtualXL' [direct XLS access]
- 'VirtualText' [direct CSV/TXT access]
- 'VirtualNetwork' [Dijkstra shortest path]
- 'RTree' [Spatial Index - R*Tree]
- 'MbrCache' [Spatial Index - MBR cache]
- 'VirtualSpatialIndex' [R*Tree metahandler]
- 'VirtualFDO' [FDO-OGR interoperability]
- 'SpatiaLite' [Spatial SQL - OGC]
PROJ.4 version ......: Rel. 4.7.1, 23 September 2009
GEOS version ........: 3.3.3-CAPI-1.7.4
SQLite version ......: 3.7.13
================ FDO-OGR Spatial Metadata detected ===============
.....
created VirtualFDO table 'fdo_ne_110m_geography_regions_points'
created VirtualFDO table 'fdo_ne_110m_geography_regions_polys'
created VirtualFDO table 'fdo_ne_110m_glaciated_areas'
created VirtualFDO table 'fdo_ne_110m_lakes'
created VirtualFDO table 'fdo_ne_110m_land'
created VirtualFDO table 'fdo_ne_110m_ocean'
created VirtualFDO table 'fdo_ne_110m_rivers_lake_centerlines'
Accessing these fdo_XX tables you can take full advantage of
FDO-OGR auto-wrapping facility
This allows you to access any specific FDO-OGR Geometry as if it
where native SpatiaLite ones in a completely transparent way
==================================================================
Enter ".help" for instructions
spatialite> attach "nev.sqlite" AS nev;
spatialite>
spatialite> CREATE TABLE nev.countries AS SELECT * from fdo_ne_10m_admin_0_countries;
spatialite> CREATE TABLE nev.populated_places AS SELECT * FROM fdo_ne_10m_populated_places;
spatialite> CREATE TABLE nev.railroads AS SELECT * FROM fdo_ne_10m_railroads;
spatialite> .q
*** FDO-OGR auto-wrapping shutdown done ***
"VirtualFDO ...를 생성 한"모든 행은 Spatialite가 데이터를 FDO 형식으로 인식하고 GEOMETRY가 공간적 형식으로 변환 된 각각에 대해 가상 테이블을 생성했음을 나타냅니다. 나는 attach
새로운 "nev"데이터베이스에 접속하고 CREATE TABLE ... AS SELECT * FROM ...
진술에 관심이있는 각 계층에 대해 새로운 테이블을 만듭니다 .
이제 새로운 공간 데이터베이스로 다시 전환 합니다. RecoverGeometryColumn()
모든 메타 데이터 등을 포함한 적절한 공간 데이터베이스를 얻기 위해 각 테이블에서 실행 하십시오. FDO 형식은 MULTI 및 SINGLE 지오메트리 유형을 혼합 할 수 있으므로 먼저 각 테이블에 포함 된 지오메트리 유형을 확인하고 모든 기능이 있는지 확인하십시오. 똑같다. 내가 사용 CastToMulti()
과 같이, 필요한 곳에 :
micha@Wheezy:~/GIS/World/naturalearthdata.com$ spatialite nev.sqlite
SpatiaLite version ..: 4.1.1 Supported Extensions:
- 'VirtualShape' [direct Shapefile access]
- 'VirtualDbf' [direct DBF access]
- 'VirtualXL' [direct XLS access]
- 'VirtualText' [direct CSV/TXT access]
- 'VirtualNetwork' [Dijkstra shortest path]
- 'RTree' [Spatial Index - R*Tree]
- 'MbrCache' [Spatial Index - MBR cache]
- 'VirtualSpatialIndex' [R*Tree metahandler]
- 'VirtualFDO' [FDO-OGR interoperability]
- 'SpatiaLite' [Spatial SQL - OGC]
PROJ.4 version ......: Rel. 4.7.1, 23 September 2009
GEOS version ........: 3.3.3-CAPI-1.7.4
SQLite version ......: 3.7.13
Enter ".help" for instructions
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
spatialite> .tables
SpatialIndex geometry_columns_auth spatialite_history
countries populated_places sql_statements_log
geom_cols_ref_sys railroads views_geometry_columns
geometry_columns spatial_ref_sys virts_geometry_columns
spatialite>
spatialite> SELECT GeometryType(GEOMETRY) FROM countries;
POLYGON
POLYGON
MULTIPOLYGON
MULTIPOLYGON
POLYGON
MULTIPOLYGON
POLYGON
MULTIPOLYGON
MULTIPOLYGON
.....
도형이 혼합되어 있으므로 모든 것을 MULTI로 설정 한 다음 RecoverGeometryColumn ()을 수행하십시오.
spatialite> UPDATE countries SET GEOMETRY=CastToMulti(GEOMETRY);
spatialite> SELECT RecoverGeometryColumn('countries','GEOMETRY',4326,'MULTIPOLYGON',2);
1
spatialite>
그리고 당신이 필요로하는 각 테이블에 대해서도 마찬가지입니다. 이제 테이블을 QGIS에서 사용할 수 있습니다.