CONABIO / geonode

GeoNode with Vitamins
GNU General Public License v3.0
0 stars 0 forks source link

Utilizar funcionalidad de geoserver-restconfig para establecer style via geonode_conabio python3 package #12

Open palmoreck opened 4 years ago

palmoreck commented 4 years ago

Si directamente con la funcionalidad en geonode vía línea de comando no es posible establecer styles al importar rásters o vectores (esto no he buscado) puede utilizarse geoserver-restconfig (ya instalado en geonode) como en python3_package_for_geonode/geonode_conabio/utils_docker para esto.

Probar por ejemplo con códigos como:

cat = Catalog('http://localhost:8080/geoserver/rest/', 'admin', 'geoserver')
layer = cat.get_layer('agri')
style = cat.get_style('test', 'style')
layer._set_default_style(style)
cat.save(layer)
print(layer.__dict__)

Ver como ejemplos: https://github.com/GeoNode/geonode/blob/e4f4b277554068bbcc9ae11c6ada7e96d7ad5cb9/geonode/geoserver/helpers.py#L1062

Otra opción es con pycurl

style_name = 'test:style'
geoserver_url = 'http://localhost:8080/geoserver'
geoserver_user = 'admin'
geoserver_password = 'geoserver'
workspace = 'test'
layername = 'agri'

c = pycurl.Curl()
style_xml = "<layer><defaultStyle><name>{0}</name></defaultStyle></layer>".format(
    style_name)
c.setopt(pycurl.USERPWD, geoserver_user + ':' + geoserver_password)
c.setopt(
    c.URL, '{0}/rest/layers/{1}:{2}'.format(geoserver_url, workspace, layername))
c.setopt(pycurl.HTTPHEADER, ["Content-type: text/xml"])
c.setopt(pycurl.POSTFIELDSIZE, len(style_xml))
c.setopt(pycurl.READFUNCTION, DataProvider(style_xml).read_cb)
#c.setopt(pycurl.CUSTOMREQUEST, "PUT")
c.setopt(pycurl.PUT, 1)
c.perform()
c.close()