當前位置:首頁 » 編程軟體 » 編譯原生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後怎麼卸載

建議你裝個騰訊電腦管家。
管家的管理功能挺完善的。而且各項管理能力也都比較出眾。
如需卸載,可通過管家軟體管理平台完成相關管理:
打開騰訊電腦管家~~~~工具箱~~~~軟體卸載~~~~強力刪除

同時,垃圾清理還可以清除卸載殘留文件及注冊表信息:
打開騰訊電腦管家~~~~工具箱~~~~清理垃圾/注冊表垃圾

熱點內容
connectorpython 發布:2025-05-14 09:48:50 瀏覽:762
配置不好怎麼辦 發布:2025-05-14 09:46:40 瀏覽:622
數據流程圖中的數據存儲是指 發布:2025-05-14 09:46:39 瀏覽:445
我的世界伺服器id前綴mod 發布:2025-05-14 09:45:53 瀏覽:830
完整後台網站源碼 發布:2025-05-14 09:45:46 瀏覽:455
傳奇祝福腳本 發布:2025-05-14 09:34:12 瀏覽:571
電腦文件加密的軟體 發布:2025-05-14 09:29:20 瀏覽:354
擴展資料庫表空間 發布:2025-05-14 09:29:10 瀏覽:642
mongo存儲過程 發布:2025-05-14 09:27:54 瀏覽:715
伺服器的公網ip在哪看 發布:2025-05-14 09:18:30 瀏覽:253