-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestURL.py
165 lines (137 loc) · 5.6 KB
/
testURL.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# -*- coding: utf-8 -*-
import requests
import xml.sax
import xml.sax.handler
import json
from geoStore import geoStore
class XMLHandler(xml.sax.handler.ContentHandler):
def __init__(self):
self.buffer = ""
self.mapping = {}
def startElement(self, name, attributes):
self.buffer = ""
def characters(self, data):
self.buffer += data
def endElement(self, name):
self.mapping[name] = self.buffer
def getDict(self):
return self.mapping
"""获取某个工作空间下的,某个数据存储中的某个feature的信息
需要提供工作空间名称,数据存储名称以及要素名称
"""
def getFeaturetypeInfo():
url = 'http://localhost:8081/geoserver/rest/workspaces/road_wms/datastores/tiger_roads/featuretypes/tiger_roads.xml'
param = ('admin','geoserver')
get = requests.get(url, auth=param)
print(get.text)
# 使用minidom解析器打开 XML 文档
xh = XMLHandler()
xml.sax.parseString(get.text, xh)
ret = xh.getDict()
print(ret)
"""获得某个数据存储中的所有要素
需要提供工作空间名称以及数据存储名称
"""
def getAllFeaturetype(workspaceName, storeName):
url = 'http://localhost:8081/geoserver/rest/workspaces/%s/datastores/%s/featuretypes' % (workspaceName, storeName)
param = ('admin','geoserver')
headers = {'Content-type': 'application/json'}
get = requests.get(url, auth=param, headers=headers)
print(get.text)
# 使用minidom解析器打开 XML 文档
# xh = XMLHandler()
# xml.sax.parseString(get.text, xh)
# ret = xh.getDict()
# print(ret)
#
def createFeaturetype(workspaceName, storeName):
url = 'http://localhost:8081/geoserver/rest/workspaces/%s/datastores/%s/featuretypes' % (workspaceName, storeName)
param = ('admin','geoserver')
headers = {'Content-type': 'application/xml'}
file = open('xml/createFeaturetype.xml','rb')
payload = file.read()
resp = requests.post(url, auth=param, data=payload, headers=headers)
print(resp)
if resp.status_code == 201:
print('featuretype create successfully')
else: print('featuretype create failed')
# 向工作区上传数据,上传成功会自动新建一个数据存储
def uploadShp():
myUrl = 'http://localhost:8081/geoserver/rest/workspaces/acme/datastores/roads/file.shp'
file = open('region.zip','rb')
payload = file.read()
headers = {'Content-type': 'application/zip'}
resp = requests.put(myUrl, auth=('admin','geoserver'),data=payload, headers=headers)
print(resp.text)
if resp.status_code == 201:
print('file upload successfully')
else: print('file upload failed')
def publishPGtable(name):
myUrl = ' http://localhost:8081/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes'
# file = open('requestBody.xml','r')
# payload = file.read()
data1 = '<featureType><name>%s</name></featureType>' %name
headers = {'Content-type': 'text/xml'}
resp = requests.post(myUrl, auth=('admin','geoserver'),data=data1, headers=headers)
print(resp.text)
if resp.status_code == 201:
print(name + ' publish successfully')
else: print(name + ' publish failed')
"""创建一张表,在pg数据库上"""
def createTable():
myUrl = 'http://localhost:8081/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes'
file = open('createTable.xml','r')
payload = file.read()
headers = {'Content-type': 'text/xml'}
resp = requests.post(myUrl, auth=('admin','geoserver'),data=payload, headers=headers)
print(resp.text)
if resp.status_code == 201:
print('table create successfully')
else: print('table create failed')
def getAllLayers():
url = 'http://localhost:8081/geoserver/rest/layers'
param = ('admin','geoserver')
headers = {'Content-type': 'application/json'}
get = requests.get(url, auth=param, headers=headers)
result = json.loads(get.text)
layers = result['layers']['layer']
# print(layers)
for layer in layers:
print(layer['name'])
def getAllWMSStore(workspaceName):
url = 'http://localhost:8081/geoserver/rest/workspaces/%s/wmsstores' % workspaceName
param = ('admin','geoserver')
headers = {'Content-type': 'application/json'}
get = requests.get(url, auth=param, headers=headers)
print(get.text)
def createCoverageStore():
myUrl = 'http://localhost:8081/geoserver/rest/workspaces/acme/coveragestores'
file = open('xml/coverageStore.xml','r')
payload = file.read()
headers = {'Content-type': 'application/xml'}
resp = requests.post(myUrl, auth=('admin','geoserver'),data=payload, headers=headers)
print(resp)
print(resp.text)
if resp.status_code == 201:
print('coverageStore create successfully')
else: print('coverageStore create failed')
if __name__ == "__main__":
# createWorkspace('acme')
# getFeaturetypeInfo()
# uploadShp()
# getStoreInfo('acme', 'nyc')
# gw = geoWorkspace()
# gw.getAllWorkspace()
# gw.getWorkspaceInfo('road_wms')
# gw.getAllWorkspace()
# addPGStore()
# gs = geoStore()
# gs.getAllStore('acme')
# gs.createStore('acme', )
# publishPGtable('sd')
## createTable()
# getAllFeaturetype('acme', 'nyc')
# getAllLayers()
# createFeaturetype('acme', 'nyc')
# getAllWMSStore('acme')
createCoverageStore()