Skip to content

Instantly share code, notes, and snippets.

@jtornero
Created November 16, 2023 15:15
Show Gist options
  • Save jtornero/142fa1917eddf3476f9610e440685ee5 to your computer and use it in GitHub Desktop.
Save jtornero/142fa1917eddf3476f9610e440685ee5 to your computer and use it in GitHub Desktop.
# Script para crear las capas del generalmillas
#ren=RenderNASC('#aabbcc',1101)
import math
#proy=QgsProject.instance()
#lay=proy.mapLayersByName('PR')[0]
#lay.setRenderer(ren)
# Diccionario de especies y color base para generar estilos
# Es preciso que todas las especies de las que se vaya a generar capa/ayout estén presentes
#especies={'ANE':'#00ff00',
#'PIL':'#0000ff',
#'MAS':'#00ffff',
#'MAC':'#ff0000',
#'HOM':'#ffff00',
#'HMM':'#ffffc0',
#'JAA':'#ff7f00',
#'BOG':'#c000c0',
#'MAV':'#b5fe5f',
#'SNS':'#c8c8c8',
#'POA':'#c8c8c8',
#'BOC':'#c8c8c8'}
#especies={
#'ANE':'#00ff00',
#'PIL':'#0000ff',
#'MAS':'#00ffff',
#'MAC':'#ff0000',
#'HOM':'#ffff00',
#'HMM':'#ffffc0',
#'JAA':'#ff7f00',
#'BOG':'#c000c0',
#'MAV':'#b5fe5f',
#'SNS':'#c8c8c8',
#'BOC':'#c8c8c8',
#'SAA':'#c8c8c8',
#'POA':'#c8c8c8',
#}
#eocr2022
especies={
'ANE':'#00ff00',
'PIL':'#0000ff',
'MAS':'#00ffff',
'MAC':'#ff0000',
'HOM':'#ffff00',
'HMM':'#ffffc0',
'BOG':'#c8c8c8',
'MAV':'#b5fe5f',
'SNS':'#c8c8c8',
'BOC':'#c8c8c8',
'SAA':'#c8c8c8'}
def creaCapaTMEDIA(camp,especie):
nombreCapa='%s_MLEN_%s' %(camp,especie)
# Creamos la consulta
sql="""(SELECT survey,platform_code,operation_code,species_code,mlength,stddev,operation_pt from lfd_meanlength left join species using (species_code) where survey='{0}' and fao3_code='{1}' and row(survey,platform_code,operation_code) in (select survey,platform_code,operation_code from operations where process=true))""".format(camp,especie)
print(sql)
# Primero creamos el URI y luego la capa
uriCapa=QgsDataSourceUri()
uriCapa.setConnection('HereTheServerIP','5432','database','user','password')
uriCapa.setDataSource("",sql,"operation_pt","","operation_code")
layer=QgsVectorLayer(uriCapa.uri(),nombreCapa,"postgres")
# Simbología
layer.renderer().symbol().symbolLayer(0).setSize(1)
layer.renderer().symbol().symbolLayer(0).setColor(QColor('#ff0000'))
# Etiquetas
label=QgsPalLayerSettings()
label.fieldName="""concat('P-',lpad("operation_code",2,'0'),'\n',mlength,' ± ',stddev,' cm')"""
label.isExpression=True
# Texto etiquetas
text_format = QgsTextFormat()
text_format.setFont(QFont("Arial", 9))
text_format.setSize(9)
buffer_settings = QgsTextBufferSettings()
buffer_settings.setEnabled(True)
buffer_settings.setSize(1)
buffer_settings.setColor(QColor("white"))
text_format.setBuffer(buffer_settings)
label.setFormat(text_format)
# Esta es la manera de hacer lo de el alineamiento
label.multilineAlign=QgsPalLayerSettings.MultiLineAlign(1)
layer_labels = QgsVectorLayerSimpleLabeling(label)
layer.setLabelsEnabled(True)
layer.setLabeling(layer_labels)
QgsProject.instance().addMapLayer(layer)
spes=especies.keys()
for spe in spes:
creaCapaTMEDIA('ECOCADIZ-R-2023',spe)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment