日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

arcgis与python_Arcgis-ModelBuilder和Python学习

發布時間:2025/3/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arcgis与python_Arcgis-ModelBuilder和Python学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

老師的一個項目,需求如下:

1)arcgis版本使用9.2;

2)需要發布一個數據入庫服務,第三方調用這個服務,就可以將“水窖”點位數據存入到服務器數據庫中的“水窖”圖層;

3)入庫前需要檢查“水窖”點位數據的合法性:

a.水窖點位是否在合理的區域內:水窖在縣城范圍內;

b.水窖編號的唯一性:水窖編號和數據庫中的水窖記錄編號不存在重復。

本項目中數據入庫服務是通過ArcServer進行發布,由于考慮到開發時間和開發成本,數據入庫服務不采用Web Service調用AO方式。

決定使用GP服務來實現數據入庫:利用Arcgis ModelBuilder和Python腳本進行建模,模型需要實現以上的功能,然后將這個模型發布成一個GeoProsscessor服務,第三方調用這個GeoProsscessor服務就可以實現數據入庫。思想如下:

條件1:水窖點位是否在合理的區域內:水窖在縣城范圍內

這個可以通過Arcgis ModelBuilder進行建模,對新添加的水窖點位數據和數據庫中的縣城圖層進行疊加,如果水窖點落在縣城范圍內,就滿足合理區域要求,允許存入到數據庫。

條件2:水窖編號的唯一性:水窖編號和數據庫中的水窖記錄編號不存在重復

這個需要考慮錄入新的水窖數據時,水窖的編號和數據庫中的編號不能存在重復。如果新錄入的水窖編號和數據庫中的水窖編號相同,則覆蓋數據庫中的相同水窖編號的水窖記錄。

一、條件1實現方式:ArcGIS建模

在Arcmap中進行建模,在toolbox上右鍵New Toolbox,添加一個新的工具箱,命名為“最終數據入庫”

在“最終數據入庫”上右鍵,新建一個模型,命名為CheckArea,編輯這個模型,模型視圖如下

1)模型圖的左上方,會理縣界為數據庫中的縣界圖層,FeatureSet是模型參數,為新輸入的水窖點位圖層,對兩者進行疊加,得到“會理縣界_Intersect.shp”,這個shape文件路徑為in_memory\會理縣界_Intersect.shp,說明這個shape文件是保存在內存中的(內存中的數據文件可以更快的讀寫)。

2)模型圖的左下方,FeatureSet(新輸入的水窖點位圖層)和會理水窖(數據庫中的會理水窖圖層)進行Append操作,將新添加的水窖點位存入到數據庫中的水窖圖層中。

3)為第二步的Append操作設置前提,前提就是“會理縣界_Intersect.shp”,如果這個圖層存在,說明新添加的點位都在會理縣界內,這時可以允許水窖點位數據入庫,也就是可以允許Append操作。如果這個圖層不存在,說明新添加的點不在會理縣內,不允許入庫,因此Append操作不會觸發,并且返回一個“會理縣界_Intersect.shp”前提不為真的錯誤。

4)當水窖數據入庫完成后,也就是Append操作完成后,刪除內存中的“會理縣界_Intersect.shp”,刪除操作以“會理水窖合并后”為前提,當這個圖層生成完畢,也就說明數據入庫完成,此時,可以刪除“會理縣界_Intersect.shp”圖層了。

二、條件2實現方式:Python腳本編寫

在“最終數據入庫”上右鍵,Add->Script,

General選項卡下設置:

name:刪除重復數據

label:刪除數據庫中的已存在的數據

Description:判斷數據庫中是否存在重復數據,如果存在刪除重復數據

Source選項卡下設置:

Script File:D:\刪除重復數據.py

Parameters選項卡下新建兩個變量:

Display Name???????????????????????? Data Type

NewPoint?????????????????????????????? FeatureSet?????????????????????? (定義Schema為數據庫中的水窖圖層)

CheckData?????????????????????????????? Boolean

然后點擊確定,編輯這個腳本:

檢查重復數據.py

#coding=gbkimportwin32com.client,arcgisscripting'''將數據值寫入到txt文件中'''defWriteDataToFile(value):

file_object=open('D://111.txt','w')

Svalue=str(value)

file_object.write(Svalue)

file_object.close()print'ok''''DeleteData()函數用于刪除Mdb圖層”S_Layer“中,S_Field字段下值為S_Value的地物數據

其中:S_Layer為圖層名稱

S_Field為主鍵字段

S_Value為主鍵字段值

注釋:一個圖層的數據在mdb下,主要對應S_Layer_SHAPE_Index和S_Layer兩個表'''defDeleteData(S_Layer,S_Field,S_Value):

conn=win32com.client.Dispatch('ADODB.Connection')

DSN='PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA?SOURCE=d:/sampledata/backupfinal.mdb;'conn.Open(DSN)

DeleteSQL1="delete?from"+S_Layer+"_SHAPE_Index?where?IndexedObjectId?in?(select?OBJECTID?from"+S_Layer+"where"+S_Field+"=?'"+S_Value+"')"conn.execute(DeleteSQL1)

DeleteSQL2="delete?from"+S_Layer+"where"+S_Field+"=?'"+S_Value+"'"conn.execute(DeleteSQL2)

conn.close()'''查找輸入參數FeatureSet中的特定字段值,并刪除數據庫中已存在相同字段值的地物數據'''gp=arcgisscripting.create(9.3)try:

NewPointSet=gp.GetParameter(0)

rows=gp.SearchCursor(NewPointSet)

row=rows.Next()whilerow:

name=row.getValue('水窖編號')

SJname=str(name)

DeleteData('會理水窖','水窖編號',SJname)

row=rows.next()except:printgp.getmessages()

CheckData=True

gp.SetParameter(1,CheckData)

這個腳本就是查找FeatureSet中的水窖數據,提取出主鍵字段值,并刪除數據庫中含有相同字段值的數據。

三、建立一個模型命名為“最終入庫檢查”,將條件1的model和條件2的python組合在一起。

四、在Arcgis Server將這個模型發布為GP服務

1)登錄ArcGIS Server Manager,點擊左側的Add new service:

Service Name:

Type:

Geocode Service

Geodata Service

Geometry Service

Globe Service

Geoprocessing Service

Image Service

Map Service

Description:

添加新的點位數據到水窖圖層

2)單擊next,選擇Toolbox的存儲位置:

A Toolbox:

Toolbox:

3)一直next,默認設置即可。

4)然后我們就可以看見AddDataToShuiJiao的GP服務發布完成。

五、在Arcgis Server中建立一個Application使用這個GP服務

1)在Manager中新建一個application:

Host

Web application Name:

Description:

Use settings from an existing site:

none

a1

Scyc3S

2)單擊next,添加需要顯示的圖層。

3)單擊next,單擊Add Task,選擇Geoprocessing Task,確定,然后點擊Supporting Service,就可以看到剛才發布的AddDataToShuiJiao服務,選擇“最終入庫檢查”?這個模型,點擊Apply,然后點擊next,一路默認到底。

4)在manager下發布這個application,勾選ToShuiJiao,然后單擊Deploy。

5)登錄這個Application,我的是http://WYF:8399/ToShuiJiao,然后單擊Geoprocessing Task,就會出現在線數據錄入界面。

總結

以上是生活随笔為你收集整理的arcgis与python_Arcgis-ModelBuilder和Python学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。