当前位置:首页 » 编程软件 » 编译原生pg

编译原生pg

发布时间: 2022-05-03 12:39:51

① 如何设置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,通过FileNew 创建一个新项目,本例名称为1613OPC 图1: 创建新项目 2) 通过InsertStationSimatic 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”, 或者打开操作系统的控制面板“StartControl 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 站的硬件组态后,打开配置控制台(startsimaticsimaticnetConfiguration 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 站组态的下载做准备。 注:在控制面板(StartControl Panel)的“Set PG/PC Interface”中也可设置 图16:PC Station 配置控制台Access Point  步骤三: 在STEP 7 中组态PC Station 1) 在STEP7 1613OPC 项目中,通过InsertStationSimatic 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 预处理+反汇编

④ 如何导入Postgresql数据库数据

说起数据库,大家耳熟能详的商业数据库产品当推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后怎么卸载

建议你装个腾讯电脑管家。
管家的管理功能挺完善的。而且各项管理能力也都比较出众。
如需卸载,可通过管家软件管理平台完成相关管理:
打开腾讯电脑管家~~~~工具箱~~~~软件卸载~~~~强力删除

同时,垃圾清理还可以清除卸载残留文件及注册表信息:
打开腾讯电脑管家~~~~工具箱~~~~清理垃圾/注册表垃圾

热点内容
搭建httpsgit服务器搭建 发布:2025-05-14 13:09:47 浏览:253
新电脑拿回来我该怎么配置 发布:2025-05-14 13:09:45 浏览:238
视频服务器新建ftp用户 发布:2025-05-14 13:03:09 浏览:225
php花生 发布:2025-05-14 12:54:30 浏览:550
java人才 发布:2025-05-14 12:29:10 浏览:649
如何打开软密码 发布:2025-05-14 12:28:55 浏览:427
七牛存储待遇 发布:2025-05-14 12:27:20 浏览:422
C语言a35a4a5 发布:2025-05-14 11:53:48 浏览:814
android隐藏item 发布:2025-05-14 11:43:56 浏览:328
javawebeclipse编译 发布:2025-05-14 11:35:24 浏览:938