如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统

如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统,第1张

1、GIS内核 Geotools Geotools是一套基于Java平台的开源GIS API中间件,实现了完整的GIS底层功能。

2、空间数据导入/转换地理数据的获取 地理数据来自文件、数据库和WMS/WFS服务器。

文件方式:支持读取的地理数据文件:ESRI Shape、Mapinfo Tab/Mif、Geomedia Access等,建议使用Shape文件格式,Oracle和PostgreSQL提供Shape文件导入数据库的程序。

WMS/WFS服务器:Internet上有很多开放的GIS应用服务器,例如NASA、InterGraph、TerraServer等,通过它们获取各种免费地图资源。

Google Map资源:Google Map没有采用标准的WMS/WFS协议,可以通过调用开放的Google Map API,附加自定义的WMS/WFS图层,实现应用目的。例如:通过Google Map可以免费获取高分辨的Google Map卫星地图。

3、空间数据引擎

开源:PostgreSQL(PostGIS)、MySQL(41以上)

商业:Oracle、DB2、ArcSDE

开源商业空间数据库推荐使用PostgreSQL。

使用商业空间数据库引擎,例如Oracle Spatial、ArcSDE,可以非常方便的处理地理数据,更好的处理海量数据,以及与现有商业软件共享数据。

4、应用服务器 Geoserver Geoserver是一个基于J2EE的开放的GIS应用服务器,实现了OGC(Open Geospatial Consortium)制定的WMS和WFS(WFS-T)规范,Geoserver是整个GIS应用系统的中枢部分,承担大部分业务处理任务。(新版本(133)增加了对Google Earth KML/KMZ的支持。)

需要注意的是,Geoserver不只是WebGIS服务器,它可以为桌面应用程序(Udig、Mapinfo)或移动设备(支持J2ME的PDA、手机)提供地图支持。

5、桌面应用程序(C/S) Udig、GVSig

Udig 是一个使用Eclipse RCP和GeoTools构建的桌面地理信息系统,采用Eclipse SWT图形组件,具有更快的运行速度。Udig可以直接读取Shape文件,访问DB2或Oracle空间数据库,访问OGC WMS/WFS服务器。 Udig提供浏览、查询、编辑、测量等基本的GIS *** 作功能。

6、Web应用程序(B/S) Mapbuilder Mapbuilder是一个采用AJAX(Asynchronous JavaScript and XML)技术开发的WebGIS客户端,它的内部结构基于MVC(Model-View-Controller),具有良好的可读性和可扩展性,兼容 Firefox 10+, Internet Explorer 60+, Mozilla 13+, Navigator 6+等浏览器。

用ArcCatalog的工具创建。1显示excel与xy数据:

打开arcmap软件,选择并打开gisdata文件下的oregon文件夹,选择oregongdatamdb打开,选择gtoposhd栅格并打开,打开orstationsxls,进一步查看字段和属性2设置坐标系统:在ArcMap中右键点击表名,选择Display

XY Data(显示XY数据),设置坐标字段。(X Field 为LON, Y Field 为LAT),单击Edit

按钮,设置坐标系统,选择坐标系统。(GCS采用NAD

1983):3点图层与降水数值表关联:添加ORprecipnormalsxls表以实现与orstation表关联,右击orstations表名,选择joins

and relates下的join,选择station name

作为图层关联的基础,关联的表选择orprecipnormals,两表共同的属性选择station

name,点击OK。4临时点图层导出为Geodatabase数据:右击ORstations¥Events图层,选择Data|Export

Data(导出数据),单击Browse按钮,将Save as type更改为File and Personal Geodatabase feature

classes

,定位到mgisdata\Oregon文件夹,命名输出要素类为Precip。5创建地理数据库:启动ArcCatalog,添加gisdata文件夹,右击文件夹,选择New|Personal

Geodatabase,输入rcdata作为地理数据库的名称。6创建要素数据集:右击rcdata地理数据库,选择New,选择Feature

Dataset,命名为Admin创建要素数据集,预定义坐标系统选择UTM Zone

13N,采用相同的方法创建Environmental,Transportation和Watersystem要素集,从Admin中导入坐标系统7添加Coverage到要素数据集:右击Admin要素数据集,选择Import,选择Feature

Class(single)(单一要素类),将LandUSE(Coverage)POLY导入Admin要素数据集中,命名为LandUSE ,其中的Field

Map中多余的字段如area,Perimeter,Landuse#字段可以删除。8添加shapefile(裁切)到要素数据集:右击Transportation数据集,选择Import|Feature

Class(single)(单一要素类),从archive文件夹中,导入shape文件rc_roads,命名输出要素为roads,打开ArcToolbox|Analysis

Tools|Extract|Clip;以shape文件sategeol作为Clip Features,输出schools,将其放入Admin数据集中。地理国情监测云平台有相关arcgis 方面的解决方法。以上就是如何利用ArcGIS软件创建地理数据库的答案,希望你能看懂哦。字有点多了,嘿嘿。。。

Shapfile文件为ESRI公司的文件存储格式,并且得到了业界广

泛的支持。Shapfile格式是一种简单的,用非拓朴关系的形式存储几何位置和地理特征的属性信息的格式。虽然GeoServer采用Shapfile

文件可以快速的创建网上地图服务,但它的缺点确很明显:

1、Shapefile只支持一个图层,在实际中没有意义。

2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因误删除。

3、GeoServer中用Shapfile文件作数据源的效率是很低的。

4、Shapfile中的汉字GeoServer不能解析,会出现乱码。

5、数据库可以方便的对地理信息进行查询。

用PostGIS管理空间数据

PostGIS支持GIST空间索引(附录1)、规范窗体,能很大的提高处理效率。

OGC格式只提供二维的几何体,且相关联的SRID从未深入的用于输入输出请求,PostGIS支持OpenGIS组织"Simple Features

for SQL"规范指定的所有GIS对象和函数,并进行了扩展,格式是EWKB、EWKT,其中增加了对3DZ,3DM和4D

坐标系的支持(当然三维、四维数据的OGC标准还未完全制定),深入引进了SRID信息。

空间数据表结构:PostGIS中存在两个必需的元数据表格, SPATIAL_REF_SYS(空间参考表格) 和 GEOMETRY_COLUMNS(几何体属性列),两个表用于存储空间数据库使用的坐标系统数字ID和文本描述。

PostGIS的shp2pgsql命令可以将Shapfile直接导入到数据库中也可以导出为SQL文件,推荐先导出为SQL文件再将此文件在SQL运行窗口中执行可将数据导入数据库。代码如下:

Shapfile到SQL语句:

shp2pgsql 路径/shp数据文件名 新建的数据表名 > 路径/SQL文件名sql

Shapfile直接入库:

shp2pgsql -c 路径/shp数据文件名 新建的数据表名 数据库名|psql -d 数据库名

举例说明:

如将一Shapfile文件“c:/roadshp”导入到数据表“road”中,数据库为“sjzmap”。

1、运行“命令提示符”。

2、切换至PostgreSQL数据库安装目录中的bin目录下。

3、执行此目录下的shp2pgsql命令:“shp2pgsql c:/roadshp road > c:/roadsql”。

4、如将此文件直接导入数据库(不推荐):“shp2pgsql -c c:/roadshp road sjzmap | psql -d sjzmap”。

5、使用pgAdmin3 选择数据库,再导入表。

注:

-d

Drops the database table before creating a new table with the data in the Shape file

-a

Appends data from the Shape file into the database table Note that

to use this option to load multiple files, the files must have the same

attributes and same data types

-c

Creates a new table and populates it from the Shape file This is the default mode

-p

Only produces the table creation SQL code, without adding any actual

data This can be used if you need to completely separate the table

creation and data loading steps

-D

Use the PostgreSQL "dump" format for the output data This can be

combined with -a, -c and -d It is much faster to load than the default

"insert" SQL format Use this for very large data sets

-s <SRID>

Creates and populates the geometry tables with the specified SRID

-k

Keep identifiers' case (column, schema and attributes) Note that attributes in Shapefile are all UPPERCASE

-i

Coerce all integers to standard 32-bit integers, do not create 64-bit

bigints, even if the DBF header signature appears to warrant it

-I

Create a GiST index on the geometry column

-w

Output WKT format, for use with older (0x) versions of PostGIS Note

that this will introduce coordinate drifts and will drop M values from

shapefiles

-W <encoding>

Specify encoding of the input data (dbf file) When used, all

attributes of the dbf are converted from the specified encoding to UTF8

The resulting SQL output will contain a SET CLIENT_ENCODING to UTF8

command, so that the backend will be able to reconvert from UTF8 to

whatever encoding the database is configured to use internally

在arccatalog中找到你的mdb数据库,在数据库上右键---export--to shapefile(mulpitle),然后再d出的对话框中指定输出路径即可!这个功能可以批量实现mdb转shp

1、在Arccatalog中新建一个Personal Geodatabase2、在Arccatalog中点击刚刚新建的Geodatabasemdb文件,如果你打算对数据进行分组的话,如果不需要则以下可以忽略,点击右键菜单“New”-“Feature DataSet”,建立数据集(分组),并选择跟你shp文件相同的坐标系3、点击刚刚新建的Geodatabasemdb文件,“Import”-"Feature Class",选择你要导入的shp格式文件即可。

1首先,打开3shape软件,在主界面选择"Tools",然后选择"Data Management"。

2在数据管理窗口中,点击“Database”,选择牙体形态数据库。

3点击“Browse”按钮,会出现一个新窗口,在这里可以看到牙体形态数据库中的所有项目。

4可以选择任意一个项目,点击“Preview”按钮,即可预览牙体形态数据库里的内容。

第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。

获取外部数据

python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。

1 import numpy as np

2 import pandas as pd

导入数据表

下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的

官方文档。

1 df=pdDataFrame(pdread_csv(‘namecsv’,header=1))

2 df=pdDataFrame(pdread_excel(‘namexlsx’))

创建数据表

另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。

1 df = pdDataFrame({‘id’:[1001,1002,1003,1004,1005,1006],

2 ‘date’:pddate_range(‘20130102’, periods=6),

3 ‘city’:['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '],

4 ‘age’:[23,44,54,32,34,32],

5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],

6 ‘price’:[1200,npnan,2133,5433,npnan,4432]},

7 columns =[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])

这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。

数据表检查

python 中处理的数据量通常会比较大,所以就需要我们对数据表进行检查。比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。

数据维度(行列)

Excel 中可以通过 CTRL 向下的光标键,和 CTRL 向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。

1 #查看数据表的维度

2 dfshape

3 (6, 6)

数据表信息

使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。

1 #数据表信息

2 dfinfo()

4 <class ‘pandascoreframeDataFrame’>

5 RangeIndex: 6 entries, 0 to 5

6 Data columns (total 6 columns):

7 id 6 non-null int64

8 date 6 non-null datetime64[ns]

9 city 6 non-null object

10 category 6 non-null object

11 age 6 non-null int64

12 price 4 non-null float64

13 dtypes: datetime64ns, float64(1), int64(2), object(2)

14 memory usage: 3680 bytes

查看数据格式

Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。

Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。

1#查看数据表各列格式

2dfdtypes

3

4id int64

5date datetime64[ns]

6city object

7category object

8age int64

9price float64

10dtype: object

11

12#查看单列格式

13df[‘B’]dtype

14

15dtype(‘int64’)

查看空值

Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。

df_isnull

1#检查特定列空值

2df[‘price’]isnull()

3

40 False

51 True

62 False

73 False

84 True

95 False

10Name: price, dtype: bool

查看唯一值

Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。

Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。

1 #查看 city 列中的唯一值

2 df[‘city’]unique()34array(['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '], dtype=object)

查看数据表数值

Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。

1#查看数据表的值

2dfvalues

3

4array([[1001, Timestamp(‘2013-01-02 00:00:00’), 'Beijing ', ‘100-A’, 23,

5 12000],

6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],

7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou ', ‘110-A’, 54,

8 21330],

9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,

10 54330],

11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,

12 nan],

13 [1006, Timestamp(‘2013-01-07 00:00:00’), 'BEIJING ', ‘130-F’, 32,

14 44320]], dtype=object)

查看列名称

Colums 函数用来单独查看数据表中的列名称。

1 #查看列名称

2 dfcolumns

3

4 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘age’, ‘price’], dtype=‘object’)

查看前 10 行数据

Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。

1#查看前 3 行数据``dfhead(``3``)

Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。

1#查看最后 3 行dftail(3)

以上就是关于如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统全部的内容,包括:如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统、如何利用ArcGIS软件创建地理数据库、怎么将shp导入postgis等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9523371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存