|
|
@@ -634,7 +634,7 @@ class Atlas:
|
|
|
self.dlg.pushButton_delete.setEnabled(False)
|
|
|
|
|
|
for row in range(0, len(data)):
|
|
|
- item = QTreeWidgetItem([data[row]['name']])
|
|
|
+ item = QTreeWidgetItem([self.getLayerTitle(data[row]['name'])])
|
|
|
self.dlg.treeWidget.addTopLevelItem(item)
|
|
|
self.dlg.pushButton_delete.clicked.connect(lambda: self.layerDelete(self.dlg.treeWidget.selectedItems()[0].text(0)))
|
|
|
self.dlg.pushButton_layerRedirect.clicked.connect(lambda: self.layerInfoRedirect(self.dlg.treeWidget.selectedItems()[0].text(0)))
|
|
|
@@ -967,6 +967,8 @@ class Atlas:
|
|
|
#----------------------------------------------------------
|
|
|
def readLayerJson(self,layerName, service):
|
|
|
if self.checkLayerOnLayman(layerName):
|
|
|
+ layerNameTitle =layerName
|
|
|
+ layerName = self.removeUnacceptableChars(layerName)
|
|
|
url = self.URI+'/rest/'+self.laymanUsername+'/layers/'+layerName
|
|
|
print (url)
|
|
|
r = requests.get(url = url)
|
|
|
@@ -977,11 +979,11 @@ class Atlas:
|
|
|
wmsUrl = data['wms']['url']
|
|
|
format = 'png'
|
|
|
epsg = 'EPSG:4326'
|
|
|
- self.loadWms(wmsUrl, layerName, format, epsg)
|
|
|
+ self.loadWms(wmsUrl, layerName,layerNameTitle, format, epsg)
|
|
|
if (service == "WFS"):
|
|
|
wfsUrl = data['wfs']['url']
|
|
|
print("loading WFS")
|
|
|
- self.loadWfs(wfsUrl, layerName)
|
|
|
+ self.loadWfs(wfsUrl, layerName, layerNameTitle)
|
|
|
else:
|
|
|
QMessageBox.information(None, "Layman", "Something went wrong with this layer: "+layerName)
|
|
|
def loadAllComposites(self):
|
|
|
@@ -1446,7 +1448,7 @@ class Atlas:
|
|
|
nameCheck = True
|
|
|
validExtent = True
|
|
|
layers = QgsProject.instance().mapLayersByName(layer_name)
|
|
|
- layer_name = self.removeUnacceptableChars(layer_name)
|
|
|
+ # layer_name = self.removeUnacceptableChars(layer_name)
|
|
|
layers[0].setName(layer_name)
|
|
|
if len(layers) > 1:
|
|
|
for l in layers:
|
|
|
@@ -1455,11 +1457,14 @@ class Atlas:
|
|
|
layers.append(l)
|
|
|
break
|
|
|
|
|
|
- if not (re.match('[a-zA-Z_]{1}', layer_name)): ## nesmí být nesmysl v názvu na prvním místě
|
|
|
- QMessageBox.information(None, "Layman", "Diacritics or number in first character is not allowed.")
|
|
|
- nameCheck = False
|
|
|
- if not (re.match('[a-zA-Z0-9]', layer_name)): ## není povolena diakritika
|
|
|
- QMessageBox.information(None, "Layman", "Diacritics is not allowed.")
|
|
|
+ #if not (re.match('[a-zA-Z_]{1}', layer_name)): ## nesmí být nesmysl v názvu na prvním místě
|
|
|
+ # QMessageBox.information(None, "Layman", "Diacritics or number in first character is not allowed.")
|
|
|
+ # nameCheck = False
|
|
|
+ #if not (re.match('[a-zA-Z0-9]', layer_name)): ## není povolena diakritika
|
|
|
+ # QMessageBox.information(None, "Layman", "Diacritics is not allowed.")
|
|
|
+ # nameCheck = False
|
|
|
+ if (re.match('[0-9]{1}', layer_name)): ## nesmí být nesmysl v názvu na prvním místě
|
|
|
+ QMessageBox.information(None, "Layman", "Number in first character is not allowed.")
|
|
|
nameCheck = False
|
|
|
|
|
|
print(layer_name)
|
|
|
@@ -1600,11 +1605,12 @@ class Atlas:
|
|
|
QMessageBox.information(None, "Layman", "No layer selected!")
|
|
|
|
|
|
for i in range (0, len(layers)):
|
|
|
- print(type(layers[i]))
|
|
|
- print("tst")
|
|
|
+ print(type(layers[i]))
|
|
|
+
|
|
|
print (self.isLayerInComposite(x))
|
|
|
print (layers[i].name() in self.isLayerInComposite(x))
|
|
|
inComposite = layers[i].name() in self.isLayerInComposite(x)
|
|
|
+ layerName = self.removeUnacceptableChars(layers[i].name())
|
|
|
if (self.checkExistingLayer(layers[i].name()) and inComposite):
|
|
|
j = self.getLayerInCompositePosition(x)
|
|
|
print("j je: " + str(j))
|
|
|
@@ -1613,11 +1619,12 @@ class Atlas:
|
|
|
# self.deteteLayerFromComposite(x, j, layers[i].name())
|
|
|
|
|
|
self.postRequest(layers[i].name())
|
|
|
+ layerName = self.removeUnacceptableChars(layers[i].name())
|
|
|
wmsStatus = 'PENDING'
|
|
|
j = 0
|
|
|
while ((wmsStatus == 'PENDING') and (j < 10)):
|
|
|
- print (self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layers[i].name()))
|
|
|
- response = requests.get(self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layers[i].name()), verify=False)
|
|
|
+ print (self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layerName))
|
|
|
+ response = requests.get(self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layerName), verify=False)
|
|
|
res = self.fromByteToJson(response.content)
|
|
|
try:
|
|
|
wmsStatus = res['wms']['status']
|
|
|
@@ -1644,8 +1651,8 @@ class Atlas:
|
|
|
wmsStatus = 'PENDING'
|
|
|
j = 0
|
|
|
while ((wmsStatus == 'PENDING') and (j < 10)):
|
|
|
- print (self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layers[i].name()))
|
|
|
- response = requests.get(self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layers[i].name()), verify=False)
|
|
|
+ print (self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layerName))
|
|
|
+ response = requests.get(self.URI+'/rest/'+self.laymanUsername+'/layers/'+str(layerName), verify=False)
|
|
|
res = self.fromByteToJson(response.content)
|
|
|
try:
|
|
|
wmsStatus = res['wms']['status']
|
|
|
@@ -1659,8 +1666,8 @@ class Atlas:
|
|
|
try:
|
|
|
wmsUrl = res['wms']['url']
|
|
|
except:
|
|
|
- wmsUrl = self.URI+'/geoserver/'+layers[i].name()+'/ows'
|
|
|
- self.compositeList[x]['layers'].append({"metadata":{},"visibility":True,"opacity":1,"title":str(layers[i].name()),"className":"HSLayers.Layer.WMS","singleTile":True,"wmsMaxScale":0,"legends":[""],"maxResolution":None,"minResolution":0,"url": wmsUrl ,"params":{"LAYERS": str(layers[i].name()),"INFO_FORMAT":"application/vnd.ogc.gml","FORMAT":"image/png","FROMCRS":"EPSG:3857","VERSION":"1.3.0"},"ratio":1.5,"dimensions":{}})
|
|
|
+ wmsUrl = self.URI+'/geoserver/'+layerName+'/ows'
|
|
|
+ self.compositeList[x]['layers'].append({"metadata":{},"visibility":True,"opacity":1,"title":str(layerName),"className":"HSLayers.Layer.WMS","singleTile":True,"wmsMaxScale":0,"legends":[""],"maxResolution":None,"minResolution":0,"url": wmsUrl ,"params":{"LAYERS": str(layers[i].name()),"INFO_FORMAT":"application/vnd.ogc.gml","FORMAT":"image/png","FROMCRS":"EPSG:3857","VERSION":"1.3.0"},"ratio":1.5,"dimensions":{}})
|
|
|
successful = successful + 1
|
|
|
self.dlg.progressBar.setValue(self.dlg.progressBar.value()+step)
|
|
|
|
|
|
@@ -1912,6 +1919,7 @@ class Atlas:
|
|
|
input = input.replace(" ","_")
|
|
|
input = input.replace("é","e")
|
|
|
input = input.replace("í","i")
|
|
|
+ input = input.replace("ý","y")
|
|
|
input = input.replace("á","a")
|
|
|
input = input.replace("ó","o")
|
|
|
input = input.replace("č","c")
|
|
|
@@ -1922,7 +1930,12 @@ class Atlas:
|
|
|
|
|
|
# iface.messageBar().pushWidget(iface.messageBar().createMessage("Layman:", "Diacritics in name of layer was replaced."), Qgis.Success, duration=3)
|
|
|
return input
|
|
|
-
|
|
|
+ def removeUnacceptableChars2(self, input):
|
|
|
+ input = input.encode('utf-8')
|
|
|
+ input = input.hex()
|
|
|
+
|
|
|
+ # iface.messageBar().pushWidget(iface.messageBar().createMessage("Layman:", "Diacritics in name of layer was replaced."), Qgis.Success, duration=3)
|
|
|
+ return input
|
|
|
def test (self):
|
|
|
item = self.dlgGetLayers.items.currentItem().text()
|
|
|
print( item)
|
|
|
@@ -1983,12 +1996,22 @@ class Atlas:
|
|
|
# epsg = str(data['groups']['projection']).upper()
|
|
|
epsg = 'EPSG:4326'
|
|
|
#abstract = data['data']['layers'][x]['params']['ABSTRACT']
|
|
|
- wmsName = data['layers'][x]['params']['LAYERS']
|
|
|
+ wmsName = data['layers'][x]['params']['LAYERS']
|
|
|
+
|
|
|
+ print("groupName " +groupName)
|
|
|
+ print("groupName " +layerName)
|
|
|
+
|
|
|
+ print("groupName " +format)
|
|
|
+ print("groupName " +epsg)
|
|
|
+ layerNameTitle = self.getLayerTitle(layerName)
|
|
|
+ print("groupName " +layerNameTitle)
|
|
|
+
|
|
|
+
|
|
|
if service == 'WMS':
|
|
|
- self.loadWms(repairUrl, layerName, format,epsg, groupName)
|
|
|
+ self.loadWms(repairUrl, layerName,layerNameTitle, format,epsg, groupName)
|
|
|
|
|
|
if service == 'WFS':
|
|
|
- self.loadWfs(repairUrl, layerName, groupName)
|
|
|
+ self.loadWfs(repairUrl, layerName,layerNameTitle, groupName)
|
|
|
def loadService(self, data, service, groupName = ''):
|
|
|
|
|
|
#print(len(data['layers']))
|
|
|
@@ -2010,23 +2033,41 @@ class Atlas:
|
|
|
self.loadWfs(repairUrl, layerName, groupName)
|
|
|
else:
|
|
|
QMessageBox.information(None, "Layman", "Layer: "+layerName + " is corrupted and will not be loaded.")
|
|
|
-
|
|
|
- def loadWms(self, url, layerName, format, epsg, groupName = ''):
|
|
|
+ def getLayerTitle(self, layerName):
|
|
|
+ layerName = self.removeUnacceptableChars(layerName)
|
|
|
+ url = self.URI+'/rest/'+self.laymanUsername+'/layers/'+layerName
|
|
|
+ r = requests.get(url = url)
|
|
|
+ data = r.json()
|
|
|
+ print(data)
|
|
|
+ title = data['title']
|
|
|
+ return title
|
|
|
+
|
|
|
+ def loadWms(self, url, layerName,layerNameTitle, format, epsg, groupName = ''):
|
|
|
print(url)
|
|
|
+ layerName = self.removeUnacceptableChars(layerName)
|
|
|
+ epsg = "EPSG:4326"
|
|
|
urlWithParams = 'contextualWMSLegend=0&crs='+epsg+'&dpiMode=7&featureCount=10&format=image/png&layers='+layerName+'&styles=&url=' + url
|
|
|
print(urlWithParams)
|
|
|
- rlayer = QgsRasterLayer(urlWithParams, layerName, 'wms')
|
|
|
+
|
|
|
+ rlayer = QgsRasterLayer(urlWithParams, layerNameTitle, 'wms')
|
|
|
+ try:
|
|
|
+ print("extents")
|
|
|
+ print(rlayer.ignoreExtents())
|
|
|
+ except:
|
|
|
+ pass # pro qgis 3.10 a vys
|
|
|
+
|
|
|
if (groupName != ''):
|
|
|
self.addWmsToGroup(groupName,rlayer)
|
|
|
else:
|
|
|
QgsProject.instance().addMapLayer(rlayer)
|
|
|
|
|
|
- def loadWfs(self, url, layerName, groupName = ''):
|
|
|
+ def loadWfs(self, url, layerName,layerNameTitle, groupName = ''):
|
|
|
+ layerName = self.removeUnacceptableChars(layerName)
|
|
|
epsg = 'EPSG:4326'
|
|
|
- uri = self.URI+"/geoserver/"+self.laymanUsername+"/ows?srsname="+epsg+"&typename="+self.laymanUsername+":"+layerName+"&restrictToRequestBBOX=1&pagingEnabled=True &version=auto&request=GetFeature&service=WFS"
|
|
|
+ uri = self.URI+"/geoserver/"+self.laymanUsername+"/ows?srsname="+epsg+"&typename="+self.laymanUsername+":"+layerName+"&restrictToRequestBBOX=1&pagingEnabled=True&version=auto&request=GetFeature&service=WFS"
|
|
|
|
|
|
print(uri)
|
|
|
- vlayer = QgsVectorLayer(uri, layerName, "WFS")
|
|
|
+ vlayer = QgsVectorLayer(uri, layerNameTitle, "WFS")
|
|
|
print(vlayer.isValid())
|
|
|
if (groupName != ''):
|
|
|
self.addWmsToGroup(groupName,vlayer)
|