終於搞定GeoTools對PostGis的操作
這幾天搞定了GeoTools的PostgisDataStore操作。包含連線、讀取、新建、插入等等。其實很多功能比如新建和插入都可以用SQL語句去完成,不過這樣做對postgis即將推出的空間索引還是有很大影響的。所以我們沒有使用SQL去完成這些工作。
/**//*
* POSTGEO
*/
package com.geotools.test;
/** *//**
*
* CopyRight (C) All rights reserved.
* <p>
*
* WuHan Inpoint Information Technology Development,Inc.
* <p>
* Author sinoly
* <p>
* Project Name: PostGeo
*
* @version 1.0 2006-11-13
*
* <p>
* Base on : JDK1.5
* <p>
*
*/
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import org.apache.log4j.Logger;
import org.geotools.data.FeatureReader;
import org.geotools.data.FeatureSource;
import org.geotools.data.FeatureStore;
import org.geotools.data.FeatureWriter;
import org.geotools.data.postgis.PostgisDataStore;
import org.geotools.data.postgis.PostgisDataStoreFactory;
import org.geotools.factory.FactoryRegistryException;
import org.geotools.feature.AttributeTypeFactory;
import org.geotools.feature.Feature;
import org.geotools.feature.FeatureType;
import org.geotools.feature.FeatureTypeFactory;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.SchemaException;
import org.geotools.geometry.Geometry;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
publicclass GetPostgisData {
private staticfinal Logger LOGGER = Logger.getLogger("org.geotools.postgis");
static PostgisDataStore pgDatastore;
static PostgisDataStoreFactory factory=new PostgisDataStoreFactory();
static FeatureSource fsBC;
@SuppressWarnings("unchecked")
private staticvoid ConnPostGis(String dbtype,String URL,int port,String database,
String user,String password){
Map params =new HashMap();
params.put("dbtype", "postgis");
params.put("host", URL);
params.put("port", new Integer(port));
params.put("database", database);
params.put("user", user);
params.put("passwd", password);
try{
pgDatastore=(PostgisDataStore) factory.createDataStore( params );
if(pgDatastore!=null){
System.out.println("系統連線到位於:"+URL+"的空間資料庫"+database+"成功!");
}else{
System.out.println("系統連線到位於:"+URL+"的空間資料庫"+database+"失敗!請檢查相關引數");
}
}catch (IOException e) {
e.printStackTrace();
System.out.println("系統連線到位於:"+URL+"的空間資料庫"+database+"失敗!請檢查相關引數");
}
}
//讀取指定型別名的地理特徵
public staticvoid getFeatureSource(String sourceName){
try{
fsBC = pgDatastore.getFeatureSource(sourceName);
//System.out.println(fsBC.getFeatures().size());
}catch (IOException e) {
e.printStackTrace();
}
}
//取得POSTGIS中所有的地理圖層
public staticvoid getAllLayers(){
try{
String[] typeName = pgDatastore.getTypeNames();
for(int i=0;i<typeName.length;i++){
System.out.println(typeName[i]);
}
}catch (IOException e) {
e.printStackTrace();
}
}
//獲取圖層地理元素屬性(Feature Attribute)
public staticvoid getAttribute(){
FeatureType ftBC=fsBC.getSchema();
System.out.println(ftBC.getAttributeCount());
for (int i =0; i < ftBC.getAttributeCount(); i++) {
AttributeType at = ftBC.getAttributeType( i );
//判斷屬性型別是否為可分配的幾何物件
if (!Geometry.class.isAssignableFrom(at.getType()))
System.out.print(at.getType() +"\t");
}
System.out.println();
for (int i =0; i < ftBC.getAttributeCount(); i++) {
AttributeType at = ftBC.getAttributeType( i );
if (!Geometry.class.isAssignableFrom(at.getType()))
System.out.print(at.getName() +"\t");
}
}
//從資料容器中讀取所有的特徵屬性
@SuppressWarnings("deprecation")
public staticvoid PostGisReading(){
try{
FeatureResults fsRU = fsBC.getFeatures();
FeatureReader reader = fsRU.reader();
while (reader.hasNext()) {
Feature feature;
try{
feature = reader.next();
System.out.print(feature.getID() +"\t");
for (int i =0; i < feature.getNumberOfAttributes(); i++) {
Object attribute = feature.getAttribute( i );
if (!(attribute instanceof Geometry))
System.out.print(attribute +"\t");
}
System.out.println();
}catch (NoSuchElementException e) {
e.printStackTrace();
}catch (IllegalAttributeException e) {
e.printStackTrace();
}
}
reader.close();
}catch (IOException e1) {
e1.printStackTrace();
}
}
//新增特徵值到新的特徵物件中。等同於新建一個postgis資料表並向其中插入資料
@SuppressWarnings("deprecation")
public staticvoid createFeatures(){
try{
AttributeType geom = AttributeTypeFactory.newAttributeType("the_geom",LineString.class);
AttributeType name = AttributeTypeFactory.newAttributeType("name",String.class);
FeatureType ftRoad = FeatureTypeFactory.newFeatureType
(new AttributeType[] {geom,name}, "tem_road");
WKTReader wktReader =new WKTReader();
try{
LineString geometry = (LineString) wktReader.read("LINESTRING (0 0, 10 10)");
String roadName="武絡路";
pgDatastore.createSchema(ftRoad);
FeatureWriter aWriter = pgDatastore.getFeatureWriter("tem_road",
((FeatureStore) pgDatastore.getFeatureSource("tem_road")).getTransaction());
/** *//**如有批量匯入資料要求,可使用 org.geotools.data.FeatureStore */
Feature aNewFeature = aWriter.next();
aNewFeature.setAttribute("the_geom",geometry);
aNewFeature.setAttribute("name", roadName);
aWriter.write();
aWriter.close();
}catch (ParseException e) {
e.printStackTrace();
}catch (IllegalAttributeException e) {
e.printStackTrace();
相關推薦
終於搞定GeoTools對PostGis的操作
唉,這幾天撒事情都沒有做,就搞定了GeoTools的一些bug的刪除。2.3版本問題比較多,上次在GT上和Richard聊天,他也對GeoTools目前的狀況表示很是不滿,但是為了PostGis的推廣更順利(畢竟,大多數使用Postgis的兄臺還是在geotools平臺上),很多時候很多事情都不是
歷經萬難,終於搞定Android下的使用FFMPEG成功對H.264視訊流解碼
[email protected] 1 WINCE AD/PWM驅動 2 HID 多點觸控驅動 3 ANDROID SIP電話 4 ANDROID SPEEX語音編解碼、迴音消除 歡迎專案合作~
利用python+seleniumUI自動化登錄獲取cookie後再去測試接口,今天終於搞定了
zsh use avatar get 獲取 mod .text 獲取cookie mob #coding=utf-8from selenium import webdriverfrom selenium.common.exceptions import NoSuchElem
開源作品ThinkJDBC—一行代碼搞定數據庫操作
和數 自增屬性 示例 blog title IE 賦值 執行 所有 1 簡介 ThinkJD,又名ThinkJDBC,一個簡潔而強大的開源JDBC操作庫。你可以使用Java像ThinkPHP框架的M方法一樣,一行代碼搞定數據庫操作。ThinkJD會自動管理數據庫連接,使用完
今天終於搞定了Qt+gsoap2.8的編譯了.
相關文章 第一步,下載gsoap2.8 地址:https://sourceforge.net/projects/gsoap2/files/ 學習資料:https://ww
終於搞定Linux的NAT即時生效問題
引:超長的前言Linux的NAT不能及時生效,因為它是基於ip_conntrack的,如果在NAT的iptables規則新增之前,此流的資料包已經綁定了一個ip_conntrack,那麼該NAT規則就不會生效,直到此ip_conntrack過期,如果一直有資料在魯莽地嘗試傳輸,
開發自己的IDE(十),我終於搞定了智慧提示了哇哈哈
今天我終於實現了偉大的智慧提示了,真是渾身上下都在發光啊。這次智慧提示的程式碼可以在Vczh Library+ 3.0的頁面上看到。我使用了上一篇文章所提到的技術,在使用者輸入文字的時候,通過迅速獲得“當前編輯語句”的語法樹,再加上舊的“當前編輯語句”的作用域物件,來判斷使用者究竟處於整份
在Word2016公式編輯器中一招搞定等號對齊問題
微軟OFFICE套裝中的公式編輯器歷來為人所詬病,但有時還不得不用它來編輯文件。 有時在Word中我們會遇到多行等式對不齊的情況,這讓人非常抓狂: 而我們希望是: ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪s0stbtct=x0=α(xt−ct−L)+(1−α)(st−1
usb wifi移植終於搞定了
1.選的wifi晶片是rtl8188cus 2.選的開發包是0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip 3.編譯8192cu.ko 4.編譯iwconfig工具 5.編譯wpa工具 6.移植到板上 1>
終於搞定了kali linux的網絡卡驅動問題
上一篇說我下了個1.0版本,結果放在VMware裡顯示grub無法安裝導致系統無法被引導,可能是因為低版本有專門為虛擬機器開發的VMware kali,而kali的官網上寫的是到kali2.0已結把虛擬機器版本結合到了
Linux下tomcat設定jsp連線mysql 的問題忙了幾天,終於搞定
OS: Ubuntu6.06Tomcat: Tomcat 5.0.30Mysql: MySQL5.0.22mysql-connector: mysql-connector-java-3.1.14本來安裝完JDBC驅動mysql-connector-java後應該可以正常連線m
ubuntu字型終於搞定了
終於可以擺脫難看的楷體,用simsun字型上88了。 方法如下: 從C://windows/FONTS/下把windows的字型拷貝到/usr/share/fonts/TTF/下 進入該目錄 執行 sudo mkfontdir su
經過兩個多月的攻關,終於搞定了live555多執行緒並穩定壓測通過
live555已經發展了十幾年了,不得不欽佩作者堅持不懈的奉獻和國外的開源生態環境,live555可以說是大部分的安防從業者的入門之選,尤其是在嵌入式或者Linux系統上,其應用還是蠻廣泛的,主要是其相容性和穩定性; 但是隨著live555十幾年的不斷迭代
終於搞定了回家車票
port win64 false 示意圖 pro connect -c pen ext 快要春節了,老板發話:‘提前完成工作可以提前回家‘;於是老貓每天加班加點趕進度,估計提前1周回家;正當老貓沈浸在幸福之時,老板過來關心問我:‘老貓,車票買了嗎,買不到晚幾天走吧,那會好買
我的畢設終於搞定了!題為:利用Python開發一款遊戲!
現在來看一下實現的過程。 外形 俄羅斯方塊整個介面分為兩部分,一部分是左邊的遊戲區域,另一部分是右邊的顯示區域,顯示得分、速度、下一個方塊樣式等。這裡就不放截圖了,看上圖就可以。 遊戲區域跟貪吃蛇一樣,是由一個個小方格組成的,為了看得直觀,
用WM_CONCAT查詢資料的時候超過10條報不存在的lob值, 弄了一上午終於搞定了!
我原先的sql: SELECT ut.userid AS USERID, ut.operatorname AS USERNAME, ut.operatorid AS OPERATOR
輕鬆搞定記憶體對齊
記憶體對齊 一、概念 對齊跟資料在記憶體中的位置有關。如果一個變數的記憶體地址正好位於它長度的整數倍,他就被稱做自然對齊。比如在32位cpu下,假設一個整型變數的地址為0x00000004,那它就是自然對齊的。 二、為什麼要位元組對齊
終於搞定無參“動態呼叫WebService方法”,其實很簡單,大家還是要有信心,還是要有琢磨的精神。
終於搞定“動態呼叫WebService方法”: 我在學習 動態呼叫WebService方法時看到很多網友在呼叫函式(其實往往是“無參”函式)時得到一個錯誤: 未將物件引用設定到物件的例項。 這個錯誤很常見,貌似不好處理,沒明白的人不知所云,所以這裡提醒我們自己:凡是
終於搞定使用node.js +redis 作為服務端,提供圖片上傳儲存服務
系統不提供業務層面上的邏輯,只負責儲存和結構關係。業務相關的資料,全部通過引數化傳入。 upload.js 檔案程式碼: //自定義引數區 var basePath='e:/';//上傳的根路徑 var tempPath='c:/'; var redis_ip='127.0
終於搞定Paypal了
PayPay API PayPal提供了多個API介面供開發者使用。在使用API之前,你必須先申請一個高階個人賬戶或者企業賬戶,同時你必須獲取API 憑證供每次呼叫API 時使用。一旦你獲取了API憑證,您就可以呼叫相關的API介面了。目前,我們提供兩種API介面方式,NVP和SOAP。一般來說我們推薦您使