-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from geomondego/master
Updates
- Loading branch information
Showing
3 changed files
with
391 additions
and
3 deletions.
There are no files selected for viewing
199 changes: 199 additions & 0 deletions
199
qgis2CartTop/processing_provider/exportar_designacao_local.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
from qgis.PyQt.QtCore import QCoreApplication | ||
from qgis.core import (QgsProcessing, | ||
QgsProcessingAlgorithm, | ||
QgsProcessingMultiStepFeedback, | ||
QgsProcessingParameterFeatureSource, | ||
QgsProcessingParameterEnum, | ||
QgsProperty, | ||
QgsProcessingParameterBoolean) | ||
import processing | ||
from .utils import get_postgres_connections | ||
|
||
|
||
class Exportar_designacao_local(QgsProcessingAlgorithm): | ||
|
||
# Constants used to refer to parameters and outputs. They will be | ||
# used when calling the algorithm from another algorithm, or when | ||
# calling from the QGIS console. | ||
|
||
INPUT = 'INPUT' | ||
VALOR_LOCAL_NOMEADO = 'VALOR_LOCAL_NOMEADO' | ||
POSTGRES_CONNECTION = 'POSTGRES_CONNECTION' | ||
|
||
|
||
def initAlgorithm(self, config=None): | ||
self.postgres_connections_list = get_postgres_connections() | ||
|
||
self.addParameter( | ||
QgsProcessingParameterEnum( | ||
self.POSTGRES_CONNECTION, | ||
self.tr('Ligação PostgreSQL'), | ||
self.postgres_connections_list, | ||
defaultValue = 0 | ||
) | ||
) | ||
|
||
self.addParameter( | ||
QgsProcessingParameterFeatureSource( | ||
self.INPUT, | ||
self.tr('Input point layer (2D)'), | ||
types=[QgsProcessing.TypeVectorPoint], | ||
defaultValue=None | ||
) | ||
) | ||
|
||
self.valor_local_nomeado_dict = { | ||
'Capital do País':'1', | ||
'Sede administrativa de Região Autónoma':'2', | ||
'Capital de Distrito':'3', | ||
'Sede de Concelho':'4', | ||
'Sede de Freguesia':'5', | ||
'Forma de relevo':'6', | ||
'Serra':'6.1', | ||
'Cabo':'6.2', | ||
'Ria':'6.3', | ||
'Pico':'6.4', | ||
'Península':'6.5', | ||
'Baía':'6.6', | ||
'Enseada':'6.7', | ||
'Ínsua':'6.8', | ||
'Dunas':'6.9', | ||
'Fajã':'6.10', | ||
'Lugar':'7', | ||
'Cidade':'7.1', | ||
'Vila':'7.2', | ||
'Outro aglomerado':'7.3', | ||
'Designação local':'8', | ||
'Área protegida':'9', | ||
'Praia':'10', | ||
'Oceano':'11', | ||
'Arquipélago':'12', | ||
'Ilha':'13', | ||
'Ilhéu':'14', | ||
'Outro local nomeado':'15' | ||
} | ||
|
||
|
||
self.addParameter( | ||
QgsProcessingParameterEnum( | ||
self.VALOR_LOCAL_NOMEADO, | ||
self.tr('valorLocalNomeado'), | ||
list(self.valor_local_nomeado_dict.keys()), | ||
defaultValue=1, | ||
optional=False, | ||
) | ||
) | ||
|
||
def processAlgorithm(self, parameters, context, model_feedback): | ||
# Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the | ||
# overall progress through the model | ||
feedback = QgsProcessingMultiStepFeedback(2, model_feedback) | ||
results = {} | ||
outputs = {} | ||
|
||
# Convert enumerator to zero based index value | ||
valor_local_nomeado = self.parameterAsEnum( | ||
parameters, | ||
self.VALOR_LOCAL_NOMEADO, | ||
context | ||
) + 1 | ||
|
||
# Refactor fields | ||
alg_params = { | ||
'FIELDS_MAPPING': [{ | ||
'expression': 'now()', | ||
'length': -1, | ||
'name': 'inicio_objeto', | ||
'precision': -1, | ||
'type': 14 | ||
},{ | ||
'expression': str(valor_local_nomeado), | ||
'length': 255, | ||
'name': 'valor_local_nomeado', | ||
'precision': -1, | ||
'type': 10 | ||
},{ | ||
'expression': 'nome', | ||
'length': 255, | ||
'name': 'nome', | ||
'precision': -1, | ||
'type': 10 | ||
}], | ||
'INPUT': parameters['INPUT'], | ||
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT | ||
} | ||
outputs['RefactorFields'] = processing.run('qgis:refactorfields', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | ||
|
||
feedback.setCurrentStep(1) | ||
if feedback.isCanceled(): | ||
return {} | ||
|
||
# Export to PostgreSQL (available connections) | ||
idx = self.parameterAsEnum( | ||
parameters, | ||
self.POSTGRES_CONNECTION, | ||
context | ||
) | ||
|
||
postgres_connection = self.postgres_connections_list[idx] | ||
|
||
alg_params = { | ||
'ADDFIELDS': True, | ||
'APPEND': True, | ||
'A_SRS': None, | ||
'CLIP': False, | ||
'DATABASE': postgres_connection, | ||
'DIM': 0, | ||
'GEOCOLUMN': 'geometria', | ||
'GT': '', | ||
'GTYPE': 3, | ||
'INDEX': True, | ||
'INPUT': outputs['RefactorFields']['OUTPUT'], | ||
'LAUNDER': True, | ||
'OPTIONS': '', | ||
'OVERWRITE': False, | ||
'PK': '', | ||
'PRECISION': True, | ||
'PRIMARY_KEY': 'identificador', | ||
'PROMOTETOMULTI': True, | ||
'SCHEMA': 'public', | ||
'SEGMENTIZE': '', | ||
'SHAPE_ENCODING': '', | ||
'SIMPLIFY': '', | ||
'SKIPFAILURES': False, | ||
'SPAT': None, | ||
'S_SRS': None, | ||
'TABLE': 'designacao_local', | ||
'T_SRS': None, | ||
'WHERE': '' | ||
} | ||
outputs['ExportToPostgresqlAvailableConnections'] = processing.run('gdal:importvectorintopostgisdatabaseavailableconnections', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | ||
return results | ||
|
||
def name(self): | ||
return 'exportar_designacao_local' | ||
|
||
def displayName(self): | ||
return '01. Exportar designação local' | ||
|
||
def group(self): | ||
return '02 - Toponimia' | ||
|
||
def groupId(self): | ||
return '02toponimia' | ||
|
||
def createInstance(self): | ||
return Exportar_designacao_local() | ||
|
||
def tr(self, string): | ||
""" | ||
Returns a translatable string with the self.tr() function. | ||
""" | ||
return QCoreApplication.translate('Processing', string) | ||
|
||
def shortHelpString(self): | ||
return self.tr("Exporta elementos do tipo designação local para a base " \ | ||
"de dados RECART usando uma ligação PostgreSQL/PostGIS " \ | ||
"já configurada.\n\n" \ | ||
"A camada vectorial de input deve ser do tipo ponto 2D." | ||
) |
187 changes: 187 additions & 0 deletions
187
qgis2CartTop/processing_provider/exportar_mobiliario_urbano_sinal.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
from qgis.PyQt.QtCore import QCoreApplication | ||
from qgis.core import (QgsProcessing, | ||
QgsProcessingAlgorithm, | ||
QgsProcessingMultiStepFeedback, | ||
QgsProcessingParameterFeatureSource, | ||
QgsProcessingParameterEnum, | ||
QgsProperty, | ||
QgsProcessingParameterBoolean) | ||
import processing | ||
from .utils import get_postgres_connections | ||
|
||
|
||
class Exportar_mob_urbano_sinal(QgsProcessingAlgorithm): | ||
|
||
# Constants used to refer to parameters and outputs. They will be | ||
# used when calling the algorithm from another algorithm, or when | ||
# calling from the QGIS console. | ||
|
||
INPUT = 'INPUT' | ||
VALOR_TIPO_MOBURBSINAL = 'VALOR_TIPO_MOBURBSINAL' | ||
POSTGRES_CONNECTION = 'POSTGRES_CONNECTION' | ||
|
||
|
||
def initAlgorithm(self, config=None): | ||
self.postgres_connections_list = get_postgres_connections() | ||
|
||
self.addParameter( | ||
QgsProcessingParameterEnum( | ||
self.POSTGRES_CONNECTION, | ||
self.tr('Ligação PostgreSQL'), | ||
self.postgres_connections_list, | ||
defaultValue = 0 | ||
) | ||
) | ||
|
||
self.addParameter( | ||
QgsProcessingParameterFeatureSource( | ||
self.INPUT, | ||
self.tr('Input point/polygon layer (2D)'), | ||
types=[QgsProcessing.TypeVectorPoint], | ||
defaultValue=None | ||
) | ||
) | ||
|
||
self.valor_tipo_de_mob_urbano_sinal_dict = { | ||
'Armário de semáforos':'1', | ||
'Banco de jardim':'2', | ||
'Canteiro':'3', | ||
'Contentor':'4', | ||
'Ecoponto':'5', | ||
'Equipamento de exercício físico ao ar livre':'6', | ||
'Estacionamento para velocipedes':'7', | ||
'Marco de correio':'8', | ||
'Painel publicitário':'9', | ||
'Papeleira':'10', | ||
'Parque infantil':'11', | ||
'Parquímetro':'12', | ||
'Passadeira de peões':'13', | ||
'Placa informativa':'14', | ||
'Pérgula':'15', | ||
'Posto de carregamento elétrico':'16', | ||
'Quiosque fixo':'17', | ||
'Sanitário público':'18', | ||
'Semáforo':'19', | ||
'Sinal de trânsito':'20', | ||
'Sinalização':'21' | ||
|
||
} | ||
|
||
|
||
self.addParameter( | ||
QgsProcessingParameterEnum( | ||
self.VALOR_TIPO_MOBURBSINAL, | ||
self.tr('valor_tipo_de_mob_urbano_sinal'), | ||
list(self.valor_tipo_de_mob_urbano_sinal_dict.keys()), | ||
defaultValue=1, | ||
optional=False, | ||
) | ||
) | ||
|
||
def processAlgorithm(self, parameters, context, model_feedback): | ||
# Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the | ||
# overall progress through the model | ||
feedback = QgsProcessingMultiStepFeedback(2, model_feedback) | ||
results = {} | ||
outputs = {} | ||
|
||
# Convert enumerator to zero based index value | ||
valor_local_nomeado = self.parameterAsEnum( | ||
parameters, | ||
self.VALOR_TIPO_MOBURBSINAL, | ||
context | ||
) + 1 | ||
|
||
# Refactor fields | ||
alg_params = { | ||
'FIELDS_MAPPING': [{ | ||
'expression': 'now()', | ||
'length': -1, | ||
'name': 'inicio_objeto', | ||
'precision': -1, | ||
'type': 14 | ||
},{ | ||
'expression': str(valor_tipo_de_mob_urbano_sinal), | ||
'length': 255, | ||
'name': 'valor_tipo_de_mob_urbano_sinal', | ||
'precision': -1, | ||
'type': 10 | ||
}], | ||
'INPUT': parameters['INPUT'], | ||
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT | ||
} | ||
outputs['RefactorFields'] = processing.run('qgis:refactorfields', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | ||
|
||
feedback.setCurrentStep(1) | ||
if feedback.isCanceled(): | ||
return {} | ||
|
||
# Export to PostgreSQL (available connections) | ||
idx = self.parameterAsEnum( | ||
parameters, | ||
self.POSTGRES_CONNECTION, | ||
context | ||
) | ||
|
||
postgres_connection = self.postgres_connections_list[idx] | ||
|
||
alg_params = { | ||
'ADDFIELDS': True, | ||
'APPEND': True, | ||
'A_SRS': None, | ||
'CLIP': False, | ||
'DATABASE': postgres_connection, | ||
'DIM': 0, | ||
'GEOCOLUMN': 'geometria', | ||
'GT': '', | ||
'GTYPE': 3, | ||
'INDEX': True, | ||
'INPUT': outputs['RefactorFields']['OUTPUT'], | ||
'LAUNDER': True, | ||
'OPTIONS': '', | ||
'OVERWRITE': False, | ||
'PK': '', | ||
'PRECISION': True, | ||
'PRIMARY_KEY': 'identificador', | ||
'PROMOTETOMULTI': True, | ||
'SCHEMA': 'public', | ||
'SEGMENTIZE': '', | ||
'SHAPE_ENCODING': '', | ||
'SIMPLIFY': '', | ||
'SKIPFAILURES': False, | ||
'SPAT': None, | ||
'S_SRS': None, | ||
'TABLE': 'mob_urbano_sinal', | ||
'T_SRS': None, | ||
'WHERE': '' | ||
} | ||
outputs['ExportToPostgresqlAvailableConnections'] = processing.run('gdal:importvectorintopostgisdatabaseavailableconnections', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | ||
return results | ||
|
||
def name(self): | ||
return 'exportar_mob_urbano_sinal' | ||
|
||
def displayName(self): | ||
return '01. Exportar mobiliário urbano e sinalização' | ||
|
||
def group(self): | ||
return '09 - Mobiliário urbano e sinalização' | ||
|
||
def groupId(self): | ||
return '09mobiliario' | ||
|
||
def createInstance(self): | ||
return Exportar_mob_urbano_sinal() | ||
|
||
def tr(self, string): | ||
""" | ||
Returns a translatable string with the self.tr() function. | ||
""" | ||
return QCoreApplication.translate('Processing', string) | ||
|
||
def shortHelpString(self): | ||
return self.tr("Exporta elementos do tipo mobiliário urbano e sinalização para a base " \ | ||
"de dados RECART usando uma ligação PostgreSQL/PostGIS " \ | ||
"já configurada.\n\n" \ | ||
"A camada vectorial de input deve ser do tipo ponto 2D." | ||
) |
Oops, something went wrong.