1. 程式人生 > >PostGIS+QGIS+GeoServer+OpenLayers實現資料的儲存、服務的釋出以及地圖的顯示

PostGIS+QGIS+GeoServer+OpenLayers實現資料的儲存、服務的釋出以及地圖的顯示

標題比較長,主要呢是實現以下幾點:

1、將shp資料匯入到PostGIS中;

2、Geoserver釋出WMS服務;

3、Openlayers呼叫Wms服務

首先,下載安裝軟體。

為方便大家下載,我將所有軟體上傳的百度網盤裡了,有需要的可以上網盤直接下載,地址為:http://pan.baidu.com/s/1ntJrf8P,此外,openlayers的下載地址為:http://pan.baidu.com/s/1kTBTCX5。

軟體下載完成以後安裝,如何安裝在此就不做詳述了,不過注意:postgresql-8.4.14-1-windows安裝完成之後,Stack Builder直接取消,下載太慢,安裝postgis-pg84-setup-2.0.3-1即可。

接著,將shp資料匯入到PostGIS中。

將shp資料匯入到PostGIS有兩種方式:1、通過QGIS的輔助工具;2、通過cmd命令列。

1、通過Qgis輔助工具

開啟QGIS——》開啟輔助工具Import ShapeFiles to PostgreSQL


——》新建PostGIS連線


——》新增shp資料


注意:Schema型別選擇public。

2、通過cmd命令列

通過cmd的方式比較簡單,首先,進入命令視窗,切換到PostgreSql的bin路徑:

</pre><pre name="code" class="plain">cd C:\Program Files (x86)\PostgreSQL\8.4\bin>
將shp資料轉換為SQL語句:
shp2pgsql D:\data\wgs84\mcounty.shp mcounty > D:\data\wgs84\mcounty.sql
新建table並將資料匯入:
psql -d opengis -f D:\data\wgs84\mcounty.sql postgres
比較:
第一種操作比較簡單,但是,操作步驟比較多,但是第一種操作在匯入POLYGON的時候會存在MULTIPOLYGON或者POLYGON的轉化的不一致的問題,導致資料匯入的不成功。

接著,在Geoserver中釋出。

1、新建資料儲存

在Geoserver中新建POSTGIS的資料儲存


然後釋出圖層:


圖層釋出完成之後轉到圖層預覽,以openlayers的方式開啟:


當你看到這個圖的時候,就說明你的服務已經發布成功了!

接下來就是用Openlayers呼叫顯示,

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>china EPSG:4326 image/png</title>
<link rel="stylesheet" type="text/css" href="http://200.200.200.223/OpenLayers-2.12/theme/default/style.css"/>
<style type="text/css">
	body { font-family: sans-serif; font-weight: bold; font-size: .8em; }
	body { border: 0px; margin: 0px; padding: 0px; }
	#map { width: 100%; height: 100%; border: 0px; padding: 0px; }
	#nodelist{
		position:absolute;
		right:10px;
		top:10px;
		background:#FFF;
		border:#06F solid 2px;	
		padding:5px;
	}
</style>
<script type="text/javascript" src="http://200.200.200.223/OpenLayers-2.12/OpenLayers.js"></script>
<script type="text/javascript" src="http://200.200.200.223/OpenLayers-2.12/lib/OpenLayers/Lang/zh-CN.js"></script>
<script type="text/javascript">               
	var map, demolayer;                                                                        
	OpenLayers.DOTS_PER_INCH = 90.71428571428572;
	OpenLayers.Util.onImageLoadErrorColor = 'transparent';
	function init(){
		var mapOptions = { 
			resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 
				0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 
				3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 
				2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 
				1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7
			],
			projection: new OpenLayers.Projection('EPSG:4326'),
			maxExtent: new OpenLayers.Bounds(-180.0,-90.0,180.0,90.0),
			units: "degrees",
			controls: []
		};
		map = new OpenLayers.Map('map', mapOptions );
		
		map.addControl(new OpenLayers.Control.PanZoomBar({
				position: new OpenLayers.Pixel(2, 15)
		}));
		map.addControl(new OpenLayers.Control.Navigation());
		map.addControl(new OpenLayers.Control.Scale($('scale')));
		map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
		
		var wms = new OpenLayers.Layer.WMS(
			"lake", 
			"http://200.200.200.223:8888/geoserver/wms",
			{
				LAYERS: "mpro",
				transparent:true
			},
			{
				singleTile: false, 
				ratio: 1, 
				isBaseLayer: false,
				visibility:true,
				yx : {'EPSG:4326' : true}
			} 
		);
		map.addLayer(wms);
		
		map.zoomToExtent(new OpenLayers.Bounds(73.45100463600005, 18.16324718800007, 
			134.976797647, 53.53194315200005)
		);
		
		map.events.register('click', map, function (e) {
        	console.log(e);            
        });		
	}
</script>
</head>
<body onLoad="init()">
	<div id="map"></div>
</body>
</html>

如有疑問,請聯絡:

QQ:1004740957

Email:[email protected]

相關推薦

PostGIS+QGIS+GeoServer+OpenLayers實現資料儲存服務釋出以及地圖顯示

標題比較長,主要呢是實現以下幾點: 1、將shp資料匯入到PostGIS中; 2、Geoserver釋出WMS服務; 3、Openlayers呼叫Wms服務 首先,下載安裝軟體。 為方便大家下載,我將所有軟體上傳的百度網盤裡了,有需要的可以上網盤直接下載,地址為:http

(轉)PostGIS+QGIS+GeoServer+OpenLayers實現數據的存儲服務的發布以及地圖顯示

切換 以及 data- about 100% tail error -s image http://blog.csdn.net/gisshixisheng/article/details/41575833 標題比較長,主要呢是實現以下幾點: 1、將shp數據導入到Pos

【Android】GreenDao 3.X 結合Volley以及GsonImageLoader實現資料儲存

關於GreenDao的優點已經不用再說了,關於第三方資料庫框架有很多,相對於Android系統本身的SQLite以及其它第三方而言,我感覺GreenDao使用更方便,體積小、速度更快。網上大多是關於GreenDao之前版本的介紹,關於3.0+新版的介紹不多。Gr

資料儲存計算應用視覺化,資料的基本概述都在這裡了

未來的時代,一定是資料的時代,在未來,一切被記錄,一切被分析,資料將以資產的方式存在,相關知識如下: 一、先說各種資料儲存 資料是個很泛的概念,但是我們腦海裡第一反應的就是關係型資料庫和EXCEL這種二維表是資料。 而現在資料各種各樣特色,有文件、有圖片、有流式

[視訊]物聯網&整合系統中的物聯互動資料儲存效果展示形成快速解決方案。附:ServerSuperIO 3.6.2 版本釋出

增加併發模式下設定輪詢傳送裝置資料的間隔時間ParallelDeviceInterval屬性。如果有N個裝置,ParallelDeviceInterval預設值為10毫秒,ParallelInterval預設值為1000毫秒,那麼其中一個裝置的排程週期=1000+10*N。

(hadoop學習-1)mapreduce實現資料過濾聚合與排序

利用chain mapreduce,依次執行兩個mapreduce Job。第一個Job抽取donor_city(城市名)、total(捐贈金額)欄位,並按照城市名實現捐贈金額聚合,實現資料過濾、聚合;第二個Job,按照捐贈金額排降序。 - 第一個Job Mapper:抽取donor_city(城市名)、to

OpenCV學習筆記06--資料儲存配置檔案

本節主要學習OpenCV中的資料儲存、配置檔案如果只是儲存一個使用者物件,我們可以用cvSavevoid cvSave( const char* filename, const void* struct_ptr,const char* name=NULL, const cha

hue安裝步驟+mysql元資料儲存hivehadoop做整合

1. 使用yum工具來安裝hue相關的依賴軟體:sudo yum install krb5-develcyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-developenldap

移動端二三事【四】:陀螺儀(重力感應器)實現手機位置加速度感應以及常見應用。

效果 防止 size tro 通過 select 代碼 陀螺儀 prime 首先說明一下:陀螺儀感應需在真機環境下進行調試,PC端無效果。 1.獲取感應器 需在window上監聽devicemotion事件,再通過事件對象獲取accelerationIncludingG

移動端二三事【五】:陀螺儀(重力感應器)實現手機位置加速度感應以及常見應用。

首先說明一下:陀螺儀感應需在真機環境下進行除錯,PC端無效果。 1.獲取感應器 需在window上監聽devicemotion事件,再通過事件物件獲取accelerationIncludingGravity(內建重力加速度感應器)物件。程式碼如下:

PB 如果把PDF 轉換成二進位制資料儲存到資料庫,並讀取顯示

PB如果把PDF檔案轉換成二進位制資料儲存到資料庫,並讀取顯示。 給視窗新增一個PDF的OLE控制元件。 //OLE控制元件關聯檔案 string ls_filepath,ls_filename blob lb_object,ole_blob GetFileOpenName

ZooKeeper系列之二:ZooKeeper資料模型名稱空間以及節點的概念

ZooKeeper資料模型和層次名稱空間 提供的名稱空間與標準的檔案系統非常相似。一個名稱是由通過斜線分隔開的路徑名序列所組成的。ZooKeeper中的每一個節點是都通過路徑來識別。  下圖是Zookeeper中節點的資料模型,這種樹形結構的名稱空間操作方便且易於理解。

33基於dubbo如何做服務治理服務降級以及重試?

1、面試題 如何基於dubbo進行服務治理、服務降級、失敗重試以及超時重試? 2、面試官心裡分析 服務治理,這個問題如果問你,其實就是看看你有沒有服務治理的思想,因為這個是做過複雜微服務的人肯定會遇到的一個問題。 服務降級,這個是涉及到複雜分散式系統中必備的一個話題,因為分散式系統互

Python基礎(7)——名片管理系統(實現資料簡單的儲存修改刪除檢視等)

進行了一些Python基礎知識的學習後,將這些知識進行綜合,實現了名片管理小系統,可以進行資料的增刪改查。 主要思路是將名片(資訊)存進字典裡,再將字典存入列表裡,方便進行增刪改查。 程式碼如下: #-*-encoding:utf-8-*- #用來儲存名片 card_in

MySQL 基於儲存過程 實現資料統計按日月份統計模板

儲存過程developer_count 是根據傳入引數searchType 決定是使用那種查詢方式,本儲存過程中包含的其他的引數是{起始時間:startime,結束時間:endtime} CREATE PROCEDURE developer_count ( search

Android自定義照相機實現(拍照儲存到SD卡,利用Bundle在Acitivity交換資料

Android自定義照相機實現 近期小巫在學校有一個創新專案,也不是最近,是一個拖了很久的專案,之前一直沒有去搞,最近因為要中期檢查,搞得我跟小組成員一陣忙活,其實開發一款照相機軟體並不太難,下面就是通過自定義的方式來實現手機照相的功能。 建立一個專案:FingerTake

資料結構】二叉樹(順序儲存鏈式儲存)的JAVA程式碼實現

二叉樹是一種非線性的資料結構。它是由n個有限元素的集合,該集合或者為空、或者由一個稱為根(root)的元素及兩顆不相交的、被分別稱為左子樹、右子樹的二叉樹組成。當集合為空時,稱該二叉樹為空二叉樹。在二叉樹中,一個元素也可以稱做一個結點。二叉樹是有序的,即若將其左右兩個子樹顛倒

利用AOP實現一個簡單的快取儲存清除的工具

基本要求:利用aop實現一個簡單的快取儲存、清除的工具,從實際使用上來說,切面應該在provider層。在service層方法呼叫和資料庫查詢之間生效。為了簡化過程,不要求與資料庫互動,資料可以隨機生成,不要求使用redis等中介軟體,可以直接快取到記憶體中。 程式碼實現非常的基礎,能夠很好

11.1 js中級,資料型別資料儲存方式作用域記憶體空間的區別以及例識別。

一. 基本資料型別和引用資料型別的區別。     1.基本資料型別:基本資料型別就是簡單的操作值。     2.引用資料型別:就是把引用的地址賦給變數。   堆記憶體:     就是存放程式碼塊的,存放形式有兩種       1)物件以鍵值對的形式存放       2)引用資料型別的賦值,是把引用

分散式事務 解決資料一致性(一)事務原則與實現:事務sql事務

事務: 定義:       是以一種可靠、一致的方式,訪問和操作資料庫中資料的程式單元。 原則:      *a、 原子性   * b、一致性  * c、隔離性 &nbs