编译原生pg
① 如何设置SIMATIC NET
通过CP1613 建立SIMATIC NET OPC 服务器与PLC 的S7 连接 一.基本相关信息 1. SIMATIC NET PC 软件简介 SIMATIC NET 是西门子在工业控制层面上提供给您的一个开放的,多元的通讯系统。 它意味着您能将工业现场的PLC、主机、工作站和个人电脑联网通讯,为了适应自动化 工程中的种类多样性,SIMATIC NET 推出了多种不同的通讯网络以因地制宜,这些通 讯网络符合德国或国际标准,他们包括: 工业以太网 AS-I PROFIBUS PROFIBUS-PA SIMATIC NET 系统包括: 传输介质,网络配件和相应的传输设备 协议和服务 连接PLC 和电脑到LAN 网上的通讯处理器(CP 模块) 2. 用于ETHERNET 的先进PC 组态 先进PC 组态是随SIMATIC NET V6.0 以上提供的。Advanced PC Configuration 代表 一个 PC 站的全新、简单、一致和经济的调试和诊断解决方案。它可以取代以前的 PC 组态工具COM L S7。通过使用NCM PC V5.1+SP2 或以上和STEP 7 V5.1+SP2 或更 高版本,一台PC 可以和在SIMATIC S7 中一样进行组态,并通过网络下载. 这里提到两种组态工具NCM PC,STEP 7,区别如下: NCM PC: NCM PC 是随SIMATIC NET 软件光盘提供,它可以创建PC 项目和打开STEP 7 项目。但NCM PC 组态软件不能编辑STEP 7 中的S7 程序块。 STEP 7: 完整版本STEP 7 软件的安装是包含NCM PC 的,在STEP 7 硬件组态环境中即 可配置PC 站。 3. 用于ETHERNET 的OPC 服务器 SIMATIC NET OPC 服务器随 SIMATIC NET 软件光盘提供,其名称为 OPC.SimaticNET 。 OPC(OLE For Process Control,用于过程控制的OLE)的基本原理是,OPC 客户 应用程序可以通过一个标准、开放的多供应商接口,与OPC 服务器进行通讯。 OPC 服务器提供: 数据访问接口2.05 报警和事件接口1.02(单一事件) 在不同制造商自动化产品之间的标准化。 用于不同部件的相同的、用户友好的用户接口。 从工业网/广域网中每个计算机的可访问性。 经过客户机接口(C++)的高性能数据存取。 经过自动化接口(VB)或包含OCX 数据控制,使用容易。 因特网通讯可通过XML DA 接口实现。 变量(项目)的成组化;这样可以在很短的时间内进行大容量的数据存取。 通过OPC 服务器,以下通讯访问选件可以用于Ethernet: S7 通讯 S5 兼容通讯(发送/接收) PROFInet 4. PC 机的软件和硬件需求 软件: SIMATIC NET PC SOFTWARE V6.0 SP5 或以上版本 NCM PC V5.1+SP2 或以上版本 STEP 7 V5.1+SP2 或以上版本 SOFTNET-IE S7 授权(CP1612 或普通网卡) S7-1613 授权(CP1613) 硬件: CP1613 或普通10/100 自适应以太网卡 PC机操作系统:根据不同版本SIMATIC NET软件来选择,如WINDOWS2000; WINDOWSXP… 查阅 SIMATIC NET 软件兼容性列表。
5. SIMATIC NET 软件产品性能及使用注意事项 请点击
查阅 SIMATIC NET 软件系列产品的性能数据及使用注意事项
二.通过ETHERNET(CP1613)建立OPC 服务器与S7 PLC 的S7 连接(基 于先进的PC 组态) 1. 例子中所用的软件与硬件 SIMATIC NET PC SOFTWARE V6.2 SP1 S7 1613 授权 STEP 7 V5.3 SP1 CP1613 S7 300 CPU315-2DP,CP343-1(6GK7 343-1EX20-0XE0) 通讯协议 TCP/IP 2. OPC 服务器与PLC S7 连接通讯的组态 A. S7 PLC 的组态 1) 打开SIMATIC Manager,通过FileNew 创建一个新项目,本例名称为1613OPC 图1: 创建新项目 2) 通过InsertStationSimatic Pc Station 插入一个SIMATIC 300 站 图2:插入S7 300 Statiion 3) 双击Hardware 进入S7 300 硬件组态,在相应插槽插入与机架硬件匹配的模块,并 对CP343-1 分配IP 地址等参数,建立以太网。 图3: 组态硬件 4) 设置完各硬件参数后,点击存盘编译按钮,编译无误后即完成S7 300 硬件组态。 图4:S7 300 组态的编译存盘 5) S7300PLC 的下载 首先要选择正确的下载路径,即设置PG/PC 接口: 在“SIMATIC Manager”主菜单“Option”的下拉菜单中选择“Set PG/PC Interface”, 或者打开操作系统的控制面板“StartControl Panel”,同样打开“Set PG/PC Interface” 进行设置。如图5,图6。 图5:在STEP7 中设置PG/PC 接口 图6:控制面板PG/PC 接口设置 在PG/PC 接口设置中,根据所选的下载方式(MPI/Profibus/Ethernet)和PC 所使用的硬 件(PC 适配器/CP5613/CP5512 等)来设置正确的接口参数。详细设置方法可参考西门子自 动化与驱动集团技术支持与服务网站网上课堂PLC 课程中的“如何使用PC Adapter CP5611 CP5511 CP5512 建立STEP7 与PLC 通讯”这篇文章。 打开www.ad.siemens.com.cn/service 主页,进入专家奉献的网上课堂即可下载。 图7: Set PG/PC Interface 设置窗口 B. Simatic PC 站的组态 步骤一: 配置PC 站的硬件机架 当SIMATIC NET 软件成功安装后,在PC 机桌面上可看到Station Configurator 的快捷 图标,同时在任务栏(Taskbar)中也会有Station Configuration Editor 的图标。 图8: Station Configurator 桌面快捷图标 图9:任务栏中的图标 1) 通过点击图标打开Station Configuration Editor 配置窗口 图10:Station Configuration Editor 配置窗口 2) 选择一号插槽,点击 Add 按钮或鼠标右键选择添加,在添加组件窗口中选择 OPC Server 点击OK 即完成。 图11:添加OPC Server 3) 同样方法选择三号插槽添加CP1613 图12: 添加CP1613 插入CP1613 后,即弹出其属性对话框。设置网卡参数,如IP 地址,子网掩码等。 图13: 网卡属性即参数设置 4) 分配PC Station 名称 点击“Station Name”按钮,指定PC 站的名称,这里用默认的名称。命名原则:这里的 PC 站名应与STEP7 硬件组态插入的PC Station 名称一致。点击“OK”确认即完成了PC 站的硬件组态。 图14:命名PC 站名称 注:Station Name 并不是特指PC 机本机的名称 步骤二:配置控制台(Configuration Console)的使用与设置 1) 配置控制台(Configuration Console)是组态设置和诊断的核心工具,用于PC 硬件 组件和PC 应用程序的组态和诊断。 2) 正确完成 PC 站的硬件组态后,打开配置控制台(startsimaticsimaticnetConfiguration console),可以看到所用以太网卡的模式已从 PG mode 切换到 Configuration mode,插槽号(Index)也自动指向3。如图15。 图15 配置控制台(Configuration Console) 注:对于Simatic Net V6.1 或V6.0 版本的软件,你需要在上面窗口中,手动将CP1613 模块 模式(Mode of the mole)从PG 模式切换到组态模式(Configured mode),并设置Index 号。然后再在Station Configuration Editor 中添加硬件。 3) 在Access Points 设定窗口中,将S7ONLINE 指向PC internal(local)。此设定是为 PC 站组态的下载做准备。 注:在控制面板(StartControl Panel)的“Set PG/PC Interface”中也可设置 图16:PC Station 配置控制台Access Point 步骤三: 在STEP 7 中组态PC Station 1) 在STEP7 1613OPC 项目中,通过InsertStationSimatic Pc Station 插入一个PC 站。特别注意的是,要将PC Station 默认名称“SIMATIC PC Station(1)”改为与 Station Configuration Editor 中所命名的Station Name 名称相同,这里用默认名 “SIMATIC PC Station(1)”。双击Configuration 即可进入PC Station 组态界面。 图17: STEP 7 中创建新项目与建立Simatic PC Station 2) 在硬件组态中,从硬件目录窗口选择与已安装的Simatic net 软件版本相符的硬件插 入到与在Station Configuration Editor 配置的 PC 硬件机架相对应的插槽中。 图18: PC Station 硬件组态 3) 分配1613 以太网络参数 点击CP1613 属性对话框中Properties 按钮打开以太网接口参数设置对话框,按要求 设置以太网卡的IP 地址和相应的子网掩码。IP 地址应与实际硬件所设以太网卡IP 地址一致。(与图13 中IP 地址相同)并用New 按钮建立一个ethernet 网络。 确认所有组态参数,完成网卡设置。 图19: CP1613 参数设置 图20:以太网卡参数设置 4) 完成PC 站组件设置后,按下编译存盘按钮确定且存储当前组态配置 图21:组态的编译存盘 5) 编译无误后,点击“Configure Network”按钮,进入NetPro 配置窗口。 图22:选择“Configure Network”按钮 6) 在NetPro 网络配置中,用鼠标选择OPC Server 后在连接表第一行鼠标右键插入 一个新的连接或通过“Insert>New Connection”也可建立一个新连接。 图23:在网络配置(NetPro)中添加新连接 7) 如果在同一STEP 7 项目中,所要连接的PLC 站已经组态完成,即PLC 以太网 通讯处理器(CP343-1 or CP443-1)网络已经使能,在选择“Insert New Connection”后,连接会自动创建,需确认连接属性即可。 图24:S7 连接属性设置及确认 8) 确认所有配置后,已建好的 S7 连接就会显示在连接列表中。点击编译存盘按 钮或选择Network>Save and Compile,如得到No error 的编译结果,则正确组 态完成。这里编译结果信息非常重要,如果有警告信息(Warning)显示在编 译结果对话框中,这仅仅是一条信息。但如果有错误信息(error Message),说 明组态不正确,是不能下载到PC Station 中的。 图25: 组态编译存盘 图26: 编译结果 步骤四:组态下载 1) 完成PC 站组态后,即可在NetPro 窗口点击功能按钮栏中下载按钮将组态下载到PC 站中。需注意的是,下载过程中会删除已有相关组件的数据,新的组态数据将被下载 到PC 机。点击OK 执行下载。 图27:组态下载 2) 下载完成后,可以打开Station Configuration Editor 窗口检查组件状态。下图为正确 状态显示画面。OPC Server 插槽Conn 一栏一定要有连接图标,此项说明连接激活。 (Simatic Net 软件版本V6.1 或V6.0 版本无此状态栏) 图28: PC Station 运行状态 步骤五:数据通讯的测试-OPC Scout OPC Scout 工具随Simatic Net 软件一起提供,当完成PC Station 组态下载后,可用此 工具进行OPC Server 和PLC 的数据通讯测试。 1) 打开OPC Scout, (Start>SIMATIC>SIMATICNet>OPC Scout),如图21 双击“OPC SimaticNet”在随之弹出的“ADD Group”对话框中输入组名,本例命名为“1613”。 点击OK 确认。 图29: 在OPC Scout 中添加一个组“1613” 2) 双击已添加的连接组(1613),即弹出“OPC Navigator”对话框,此窗口中显示在 Configuration Console 所激活的连接协议。双击“S7”,在PC Station 组态NetPro 中所建的连接名会被显示(S7 connection_1)。双击此连接,即可出现有可能被访 问的对象树(objects tree),在PLC CPU 中已存在的DB 块也会出现。双击任意所 需访问的PLC 数据区都可建立标签变量。这里以DB 区为例。 双击 DB 如果所显示的 DB 块有红叉标记,这并无问题。只要再次双击“New Definition”,“Define New Item”对话框即被打开。可在此定义标签变量与数据类 型。注:Datatype、Address、No.Value 参数必须定义,No.Value 是指数据长度。定 义完成后,点击OK 确认。 图30:定义条目及标签变量 3) 在“Define New Item”中点击确认后,新定义的条目即显示在OPC Navigator 的 中间窗口。点击“”就可将此条目移到 OPC-Navigator 的右侧窗口,再点击 OK 按钮就可将此条目连接到OPC Server. 图31: 建立定义条目与OPC Server 连接 4) 上一步确认后,所定义的条目(Item)即嵌入到OPC Scout 中。如果“Quality” 显示“good”,则OPC Server 与PLC 的S7 连接已经建立,也就意味着可以对标签变 量进行读写操作。 图32:OPC Scout 与OPC Server 的连接 双击条目的“Value”栏,即可在“Write Value(s) to the Item(s)”窗口中对有关条目进行写操作 图33:写操作 三. PC 站组态与OPC Server 通讯过程中常见问题的解释 1. 在执行PC Station 组态下载过程中,可能会出现“Cannot reach station manager”的错 误信息提示,可能的原因如下: 1) Set PG/PC Interface 或Configuration Console 中,S7 Online Access Points 应指向 PC Internal(Local)。 2) 虚拟PC 站的名称与STEP 7 或NCM PC 项目中建立PC 站的名称不符。 3) 虚拟PC 站组件(CP 卡、OPC 或Application)插槽号与STEP 7 或NCM PC 项 目组态中的插槽号不同。 详细说明可以访问 www.ad.siemens.com.cn/service , 选择技术资源中的产品支持 ID:12033912 2. OPC Scout 的OPC-Navigator 窗口中,红色的叉的含义时什么? Simatic Net 软件的OPC 客户端(OPC Scout)提供了使用OPC Navigator 来浏览OPC 服 务器的地址区域的选项。这里可以看到 OPC 服务器中已有地址的已知变量。如果变量还 没有定义,相对应的地址图标就以红色的叉标注。只要双击“New Definition”,“Define New Item”对话框即被打开。可在此定义标签变量,当 OPC Server 再次连接时,这些变量即 被OPC 接收,红叉即消失。所以红叉并不是错误信息,仅是没有定义OPC 变量的提示。 详细说明可以访问 www.ad.siemens.com.cn/service , 选择技术资源中的产品支持 ID:8763769 3. SIMATIC NET 软件兼容性列表 详细说明可以访问www.ad.siemens.com.cn/service , 选择技术资源中的产品支持,在 英文界面的搜索引擎中,键入关键词“Compatibility list”, 即可得到相关产品兼容性 的常见问题列表,您可点击所需条目进入具体内容页面下载文档。 图36: 兼容性查询
② 如何编译 cm12
CN:准备编译
EN:Preparing System for Build
CN:通过APT-GET,安装以下d软件包
EN:Install the following items via apt-get.
Code:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
CN:如果是32位系统,清不要安装g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
EN:As per the instructions on the wiki for building CM, if you use a 32bit system, do not install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev.
CN:安装最新版本JDK
EN:Install the latest version of Java's development kit using the following.
Code:
sudo apt-get install openjdk-7-jdk
CN:安装ADT
EN:Install the Android Development Kit using the following.
Code:
sudo apt-get install android androidsdk-uiautomatorviewer android-right android-src-vendor android-emulator android-tools-adb android-headers android-tools-adbd androidsdk-ddms android-tools-fastboot androidsdk-hierarchyviewer android-tools-fsutils androidsdk-traceview
CN:执行以下指令
EN:Run the following in terminal.
Code:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
CN:重启系统,加载配置文件
EN:reboot your system or use the following in terminal to load the .profile file again.
Code:
. ~/.profile
CN: 获取源码
EN:Getting the source code.
CN:执行以下命令,获取CM12的源码
EN:Now we can get onto grabbing the source code of CM12.
Run the following in terminal.
Code:
mkdir ~/cm
cd ~/cm
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
mkdir .repo/local_manifests
nano .repo/local_manifests/local_manifests.xml
CN: 当NANO打开之后,粘贴下面的内容,然后用ctrlx保存
When nano appears, paste the following into it and then exit using ctrl-x and choose to save.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" />
<project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" />
<project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" />
<project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" />
<project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" />
<project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" />
</manifest>
CN: 执行以下代码,继续获取代码
EN:Continue getting the code using the following.
Code:
repo sync
cd vendor/cm
./get-prebuilts
cd ../..
CN: 编译 CM12
EN:Building CM12
Run the following commands to build CyanogenMod.
Code:
. build/envsetup.sh
breakfast bacon
brunch bacon
CN: 成功编译,从out/target/proct/bacon/ 获取 cm-12-*-UNOFFICIAL-bacon.zip
EN:After successful build, you should be able to go about ing the built CyanogenMod and installing it into your phone. The CyanogenMod build is located in ~/cm/out/target/proct/bacon/ named something like cm-12-*-UNOFFICIAL-bacon.zip
You can install folllowing: http://forum.xda-developers.com/onep...s-one-t2940091
Re-building to update.
To re-build, you should just be able to run the following (Not yet tested myself, but makes logical sense).
Code:
make clobber
repo sync
cd vendor/cm
./get-prebuilts
cd ../..
. build/envsetup.sh
brunch bacon
Q&A
Q: Recieve error: fatal: plicate path device/qcom/sepolicy in ~/cm/.repo/manifest.xml
A: edit .repo/local_manifests/local_manifests.xml to remove the item which matches the item located in bold.
Q: How big is the repo?
A: 20GB just source code and 40GB when built. Therefore you should aim to have about 60GB free on your system.
③ 请问linux下,gcc编译程序的过程(从读取源文件到制作可执行程序中间所有过程,越详细越好)
gcc -S *.c 预处理+反汇编
说起数据库,大家耳熟能详的商业数据库产品当推Oracle、微软的SqlServer和IBM的
DB2等,而开源数据库中则有两大产品MySQL和PostgreSQL。
PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、
特性最丰富和最复杂的自由软件数据库系统。它起源于伯克利(BSD)的数据库研究计划,
目前是最重要的开源数据库产品开发项目之一,有着非常广泛的用户。
PostgreSQL 可以说是最富特色的自由数据库管理系统,也有人认为可以是最强大的自由
软件数据库管理系统。PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完
整性检查等特性的唯一的一种自由软件的数据库管理系统。能在多平台下---包括Linux、
FreeBSD和Windows等---运行,并且支持多语言的开发。
在两大开源数据库产品的对比中,一般认为MySQL速度更快,所以得到更为广泛的使
用;而PostgreSQL性能更为先进,PostgreSQL 提供很多 MySQL 目前所不支持的特性,比
如触发器、视图、存储过程等等,在记录数超千万之后性能表现尤其出色。
当前的最新版本是PostgreSQL 8.2.3,官方网站是:
www.postgresql.org
1.2 什么是PostGIS
PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力,相当于
Oracle的spatial部分。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最着
名的开源GIS数据库。
当前的最新版本是PostGIS 1.2.1,官方网站是:
www.postgis.org
二 PostgreSQL和PostGIS的安装
2.1 在windows下安装。
新版本的PostgreSQL在其安装程序中集成了PostGIS,只需要在安装过程中选中
PostGIS和pgsql项就可以了。
2.2 在Debian下安装PostGIS
# apt-get install postgresql-8.1 postgresql-8.1-postgis
当前Etch中的版本:PostgreSQL是8.1.7,而PostGIS是1.1.6,虽然不是最新的版本,
但已经足够了。
还需要做的工作是:
1) 创建一个专门用于PostGIS的数据库并为专用数据库导入PostGIS支持:
# su – postgres
$ cd /usr/share/postgresql-8.1-postgis
$ createdb wen1
$ createlang plpgsql wen1
$ psql -d wen1 -f lwpostgis.sql
$ psql -d wen1 -f spatial_ref_sys.sql
2) 创建一个专门的用户,并把相应的数据库和数据表的属主设置为该用户:
# su – postgres
$ psql
$ create user wen1 password ‘123456’;
$ alter database wen1 owner to wen1;
$ alter table spatial_ref_sys owner to wen1;
$ alter table geometry_columns owner to wen1 ;
3) 修改PostgreSQL配置文件以便可以远程使用。
修改PostgreSQL的配置文件/etc/postgresql/8.1/main/Postgresql.conf,将其中的一句:
listen_address=’localhost’
前面的注释去掉,并把’localhost’该为’*’。
修改Postgresql的配置文件/etc/postgresql/8.1/main/pg_hba.conf,在文件后面加一句:
host all all 192.168.0.0/24 password
这句的意思是:同网络中192.168.0.*的机器可以以密码的形式使用所有的数据库。更具
体的参数意义直接看该配置文件中的注释就可以了。
这里一定要配置正确,否则无法在远程连接PostgreSQL数据库。
2.3 源码安装PostgreSQL和PostGIS
参阅以前写的老文章。
三 PostGIS的使用
要使用PostGIS,需要两方面的预备知识,一是要熟悉基本的SQL语法;二是熟悉
PostgreSQL数据库的基本使用。
(一) 快速入门
我们使用前面创建的数据库wen2,用户为wen1,现在创建一个包含三个点的数据库
test1:
首先在Etch下以wen1登陆,然后打开wen2数据库:
$ psql -d wen2 ;
再在PostgreSQL的控制台下输入以下命令:
wen2=> create table test1 (myID int4, pt geometry, myName
varchar );
wen2=> insert into test1 values (1, 'POINT(0 0)', 'beijing'
);
wen2=> insert into test1 values (2, 'POINT(31.5 60.87)',
'shanghai' );
wen2=> insert into test1 values (3, 'POINT(10.77 85.902)',
'tianjin' );
这样我们利用PostGIS创建了一个包含三个点的GIS数据表。
为了能在QGIS中打开这一图层,我们还需要为数据表创建一个主键:
wen2=>alter table test1 add primary key (myID);
可以看到PostGIS的使用其实就相当于使用一个经过扩展的SQL语法,上述语句熟悉
SQL语法的人一看都很熟悉,都是普通的SQL语句,不同的只不过是增加了PostGIS特殊的
geometry数据类型。
你可以再试试这些SQL语句:
select * from test1;
select myID,AsText(pt) from test1;
select Distance(pt, 'POINT(0 0)') from test1;
(二) PostGIS的Geometry数据类型
Geometry可以说是PostGIS最重要的一个概念,是“几何体”的意思,由于PostGIS很
好地遵守OGC的”Simple Feature for Specification for
SQL”规范,目前支持的几何体类型包
含其实例有:
POINT(1 1)
MULTIPOINT(1 1, 3 4, -1 3)
LINESTRING(1 1, 2 2, 3 4)
POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))
MULTIPOLYGON((0 0, 0 1, 1 1, 1 0, 0 0), (5 5, 5 6, 6 6, 6 5, 5
5))
MULTILINESTRING((1 1, 2 2, 3 4),(2 2, 3 3, 4 5))
而geometry具体表现又有两种形式,一种叫做WKT(Well Known Text)形式,如上面的
例子。或者使用如下SQL语句浏览:
select AsText(pt) from test1;
另一种叫做“Canonical Form”形式,看上去是一串古怪的数字,其实是一种增强的十六
进制编码,使用如下SQL语句就可以浏览了:
select pt from test1;
(三) 读写PostGIS数据
建设好PostGIS数据库之后,我们现在需要进行读写GIS数据了,包括把GIS写入到
PostGIS数据库中以及在应用程序中使用PostGIS数据库的数据。读写PostGIS目前主要有以
下四种方式:
3.1 使用psql语言
Psql语言是PostgreSQL内嵌的一个命令行工具,其语法基本上和标准的SQL语法是一
致的,可以使用Psql工具,结合标准SQL语法和一些PostGIS的扩展对PostGIS数据库进行
读写操作。
具体例子如上面“快速入门”中的例子。
这种方式功能强大,但全部需要手工操作,烦琐且繁重。
3.2 使用一些小工具
有两个很有用的小的转换工具,一是shp2pg;一是ogr2ogr
3.2.1 shp2pgsql和pgsql2shp
shp2pgsql和pgsql2shp是PostGIS自身携带的一对在Shape文件和PostGIS数据库之间进
行转换的工具,在Debian中安装好PostGIS之后,这两个程序已经位于可执行文件的搜索路
径上,因此可以在系统中任何位置使用。
假如当前目录下有完整的china.shp文件(应该有三个同名不同扩展名的文件),需要把其
中数据输入到上述的wen2数据库中的数据表china_postgis中,具体操作为(操作用户为
wen1):
$ shp2pgsql china china_postgis > tmp.sql
$ psql -d wen2 -f roads.sql
这个工具很好用,缺点在于使用范围有限,只针对Shape文件格式。
3.2.2 ogr2ogr
PostGIS本身的shp2pg工具只把shape文件转换到PostGIS 数据库中,那如何把其他的
GIS数据加入呢?比如说MapInfo的mid格式,ESRI的e00格式呢?这就要使用ogr这个工
具了。
Ogr目前是gdal的一个组成部分,那什么是gdal呢?其官方主页(http://www.gdal.org)上
如此介绍:
GDAL is a translator library for raster geospatial data formats
that is released under an X/MIT
style Open Source license by the Open Source Geospatial
Foundation. As a library, it presents a
single abstract data model to the calling application for all
supported formats. It also comes with a
variety of useful commandline utilties for data translation and
processing.
简单地说,Gdal是一个各种Gis数据格式的转换软件库,ogr则是转换矢量GIS数据的
软件库。
目前ogr能够支持的数据格式包括:
Arc/Info Binary Coverage、DWG、ESRI Personal
GeoDatabase、ArcSDE、ESRI
Shapefile、GML、GRASS、Mapinfo File、Microstation DGN、ODBC、Oracle
Spatial和
PostgreSQL等。应该说,这就基本包括了我们平常用到的所有矢量型GIS文件格式了。
Gdal支持的栅格数据格式参阅http: //www.gdal.org/formats_list.html
下面我们从源码编译安装gdal---因为我在Debian下使用apt方式安装的gdal并不支持
postgresql数据库,其实更为简便的方法也许是去gdal.org下载一个Fwtools的工具包,可以
直接运行不用繁琐的编译,既有Windows的,也有Linux下用的,只不过这个包有些大。
1) 下载最新的gdal-1.3.2
2) 解压
3) ./configure --prefix=/opt/gdal
--with-pg=/opt/pg/bin/pg_config --without-ogdi
这里我习惯把软件安装在/opt目录下。
--with-pg参数很重要,使ogr可以支持PostGIS,后面的参数是我的PostGIS安装的地方。
我在这里编译很多次失败,经过仔细查找,发现问题出在ogdi上,所以暂时我只好使
它不支持ogdi。
4) make
5) make install
下面是使用过程,假设现在我要把一个rai.mid文件导入到数据库data1中:
$ ogr2ogr –f Postgresql PG:dbname=data1 rai.mid
注意,f参数后面跟的是导入的数据类型,最后那个文件才是要导出的文件。PG后面说
明的是数据库的名字,需要是已经创建好的数据库,而数据表则由程序自动创建。还要特别
注意权限问题,以上命令我是由postgres用户执行的。
还有一个要注意的是主键问题。一般情况下,你使用shp2pg或者 ogr2ogr向postgis中
增加了Gis数据后,在GIS客户端添加postgis图层的时候,常常会因为数据表没有定义主键
而出错,解决的办法是,在服务器上使用psql或者其他sql工具,使用命令:
alter table table_name add primary key (column_name);
另外我们发现ogr竟然是不支持最常见的GIS格式e00格式,好象是因为版权方面的原
因吧。解决的方法就是去sf.net查找相关工具。我在上面就找到一个e002pg工具,支持将
e00文件导入到postGIS数据库中。
3.3 在其他GIS软件中读写PostGIS数据
比如在QGIS中,能够打开PostGIS图层,还有SPIT插件可以把Shape文件输入到
PostGIS数据库中。
其他GIS软件如uDig,Grass等,甚至连ArcInfo都支持或部分支持读写PostGIS数据。
3.4 利用接口在应用程序中读写PostGIS数据
广大的开源GIS程序员几乎为每一种程序设计语言设计好了读写PostGIS的接口,如利
用PostgreSQL的JDBC库,可以使用Java语言在程序中读写PostGIS数据;利用libpq库,
可以使用C语言读写PostGIS数据。
(四) 使用PostGIS函数
4.1 PostGIS函数
要能熟练使用PostGIS,掌握PostGIS的所有函数是关键。通过掌握这些PostGIS函数,
我们能够高效、稳定地处理各种地理数据。由于PostGIS的函数设计时都遵守OpenGIS规范,
我们也可以把这些PostGIS叫做OpenGIS函数。
4.2 PostGIS函数的分类
PostGIS函数大致可以分为以下四类
1) 字段处理函数
这类函数当前一共有3个,分别是:
AddGeometryColumn(var1,var2,var3,var4,var5,var6):为已有的数据表增加一个地理几何
数据字段。Var1代表数据表的模式(schema)的名字,一般是public,也可以省略,则使用当
前的缺省模式;var2是已有的数据表的名字;var3是新的地理数据字段的名字;var4是
SRID值,不确定的话就取-1吧;var5是地理数据的类型,可以是POINT等;var6是指该几
何数据是二维还是三维数据。
前面的SQL语句 create table test1 (myID int4, pt geometry, myName
varchar )更规范的写
法为:
create table test1 (myID int4, myName varchar );
select AddGeometryColumn('test1','pt',-1,'GEOMETRY',2);
DropGeometryColumn函数显然是删除一个地理数据字段的;
SetSRID函数显然是设置SRID值的。
2) 几何关系函数
这类函数目前共有10个,分别是:
Distance Equals Disjoint Intersects Touches Crosses Within
Overlaps Contains Relate
3) 几何分析函数
这类函数目前共有12个,分别是:Centroid Area Lenth PointOnSurface Boundary
Buffer
ConvexHull Intersection SymDifference Difference GeomUnion
MemGeomUnion
4) 读写函数
这类函数很多,主要是用于在各种数据类型之间的转换,尤其是在于Geometry数据类
型与其他如字符型等数据类型之间的转换,函数名如AsText、GeomFromText等,其作用是
显然的。
4.3 PostGIS函数使用示例。
假设在我们的wen2数据库中,有两张表,一张为guojia,是从“国家基础地理数据”
网站下载的国界数据表,数据类型为LINE;二为shengqu_polygon,也从同一个网站下载,
地理数据类型为多边形。
1) 查询我国边境线的长度:
wen1=> select sum(length(the_geom)) as lenth from guojie;
2) 查询我国面积最大的省区名字:
wen1=> select name area(the_geom) as myarea
from shengqu_polygon
order by myarea DESC
LIMIT 1;
(五) 使用PostGIS扩展函数
除了上述遵循OpenGIS的函数之外,PostGIS还自行扩展了一些当前OpenGIS规范之外
的函数,主要包括以下几类:
5.1 管理类函数
扩展的管理类函数主要包括一些软件版本查询函数,如
postgis_version()、postgis_geos_version()、postgis_proj_version()函数等,分别查询当前的
PostGIS的版本及其使用的Geos和Proj库的版本。
5.2 数据类型的输入输出函数
除了OpenGIS定义的地理数据类型之外,PostGIS还对数据类型进行了扩展,这种扩展
主要是两方面的扩展,一是把二维的数据向三维和四维扩展;二就是在WKT和WKB数据
类型基础上扩展出EWKT和EWKB数据类型。
PostGIS提供了在这些地理数据类型和常用数据类型如字符型、浮点型数据之间进行转
换的函数。
5.3 量算函数
如length3d函数是对length2d函数的扩展。
5.4 几何操作函数
如addBBox(geometry)函数给所给的几何体加上一个边框。
如simplify(geometry,tolerance)函数可以对折线和多边形利用Douglas-Peuker算法进行一
些节点进行删除,从而使表现的图形更简单而清晰,在网络传输数据时具有更高的效率。
5.5 操作符号
5.6 其他扩展函数
(六) 建立PostGIS索引
当数据库的记录增大的时候,如果没有建立索引的话,操作的效率就显着下降。
POstGIS建议当记录数超过几千的时候就应该建立索引,而GIS数据库一般都是海量数据,
所以对PostGIS而言,索引就非常重要。
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:road.shp”导入到数据表“road”中,数据库为“sjzmap”。
1、运行“命令提示符”。
2、切换至PostgreSQL数据库安装目录中的bin目录下。
3、执行此目录下的shp2pgsql命令:“shp2pgsql c:road.shp road >
c:road.sql”。
4、如将此文件直接导入数据库(不推荐):“shp2pgsql -c c:road.shp road
sjzmap | psql -d sjzmap”。
5、使用pgAdmin3
选择数据库,再导入表。
⑤ 松下plc PG转换是什么意思啊,就是编辑程序的时候背景是灰色的
PG转换通俗一点就是说让编程软件完成对程序的编译。
⑥ pg格式文件用什么打开
好像可以试用CAD程序可以打开
⑦ pgadmin4 编译存储过程
我知道利用c++语句编译储存
1)更改数据库目录下的postgresql.conf,加入如下红色语句:
#shared_preload_libraries = '' # (change requires restart)(这个系统默认下是注释掉的,在这句下面加入下面语句)
shared_preload_libraries = '$libdir/plugins/plugin_debugger'(这是新加入的)
2)重新启动pg服务
3)在要进行调试的数据库里执行pldbgapi.sql文件,这个文件在你pg安装目录的share/postgresql/contrib/下面
调试pg的function
1)打开pgadmin4,打开你要调试的数据库,在你要调试的function上右击,这时你会发现多了一项Debugging,占击子项中的debug就可对function进行调试了。
⑧ 安装postgersql时,最后出现stack builder 2.1.0,这是什么
那个是堆栈生成器,你可要可不要,根据你自己的情况来定,具体如下
⑨ 为什么linux不能安装最新版本的postgresql呢 (postgresql-9.1.2.tar.gz)
可选择源码编译安装:
一、在root用户下使用源码编译方式安装PostgreSQL
1. 解压
tar jxvf postgresql-9.1.2.tar.bz2
2. 检查依赖软件包
rpm -qa | grep readline
rpm -qa | grep zlib
rpm -qa | grep gcc
rpm -qa | grep make
3. 如果缺少依赖软件包,安装以下软件包
gcc
make
zlib-devel
readline-devel
4. 配置PostgreSQL
cd postgresql-9.1.2
./configure --prefix=/usr/local/pgsql
5. 编译并安装PostgreSQL
make
make install
6. 创建组和用户
groupadd postgres
useradd -g postgres postgres
passwd postgres
7. 创建数据库库文件存储目录、给postgres赋予权限:
mkdir /usr/local/pgsql/data
cd /usr/local/pgsql
chown postgres.postgres data
touch /var/log/pgsql.log
chown postgres.postgres /var/log/pgsql.log
8. 初始化数据库目录(在postgres用户下执行命令)
cd /usr/local/pgsql/
./bin/initdb -E UTF-8 -D /usr/local/pgsql/data --locale=zh_CN.UTF-8
⑩ 源码编译安装postgresql后怎么卸载
建议你装个腾讯电脑管家。
管家的管理功能挺完善的。而且各项管理能力也都比较出众。
如需卸载,可通过管家软件管理平台完成相关管理:
打开腾讯电脑管家~~~~工具箱~~~~软件卸载~~~~强力删除
同时,垃圾清理还可以清除卸载残留文件及注册表信息:
打开腾讯电脑管家~~~~工具箱~~~~清理垃圾/注册表垃圾