O subprograma de extração de metadados¶
Info
Esta documentação destina-se a equipes responsáveis por infraestruturas técnicas e sua segurança. Não hesite em entrar em contato diretamente com a equipe da Isogeo para obter mais informações.
Apresentação¶
Info
Todos os processos descritos abaixo são apenas para fins de consulta, e nenhuma operação de edição é realizada nos dados de nossos clientes.
O serviço Isogeo do Windows descrito aqui inclui um subprograma usado para executar vários processos nos dados visados pelo
-
verificação da versão do software ArcGIS Pro e ativação da licença ESRI
-
listing pode ser usado para listar os dados acessíveis em :
- um banco de dados Oracle, PostgreSQL ou Microsoft SQL Server
- um geodatabase empresarial da ESRI
- um arquivo ESRI de Geodatabase
-
a assinatura é usada para calcular um hash a partir do conteúdo de uma parte dos dados
-
lookup extrai e calcula os metadados que descrevem uma parte dos dados:
- nome
- localização
- sistema de coordenadas
- coordenadas de envelope convexo em GeoJSON
- nome do campo, alias e tipo
- número de entidades
- tipo de geometria
- número de bandas
- número de colunas
- número de linhas
- nOME DA BANDA
- coordenadas da caixa delimitadora
Estrutura do JSON de uma pesquisa
[
{
"dataset": {
"name": "...",
"formatShort": "...",
"formatLong": "...",
"path": "...",
"numberOfFeatures": 0,
"coordsys": { // null si SRS inconnu
"EPSG": "...",
"name": "..."
},
"type": "...", // POINT | LINESTRING | POLYGON | MULTIPOINT | FEATURECOLLECTION | ...
"envelope": "...", // GeoJSON stringifié de l'enveloppe convexe, ou null
"attributes": [
{
"name": "...",
"type": "...",
"alias": "...",
"length": 0, // optionnel
"precision": 0, // optionnel
"scale": 0, // optionnel
"isNullable": true, // optionnel
"editable": true, // optionnel
"required": true, // optionnel
"domain": "...", // optionnel
"defaultValue": "..." // optionnel
}
],
"esriVersion": "...", // ESRI uniquement
"geometryStorage": "...", // ESRI uniquement
"warnings": { // optionnel, si SRS non résolu
"coordsys": {
"EPSG": "...",
"name": "...",
"wkt": "..."
}
}
}
}
]
[
{
"dataset": {
"name": "...",
"formatShort": "...",
"formatLong": "...", // absent en FME si non renseigné
"path": "...",
"coordsys": { // null si SRS inconnu
"EPSG": "...",
"name": "..."
},
"envelope": "...", // GeoJSON stringifié, null, ou "" si pas de géoréférencement
"bands_count": 0,
"cols_count": 0,
"rows_count": 0,
"bands": [
{
"name": "...",
"interpretation": "...",
"profondeur": "..."
}
],
"bbox": [xmin, ymin, xmax, ymax],
"esriVersion": "...", // ESRI uniquement
"warnings": { // optionnel, si SRS non résolu
"coordsys": {
"wkt": "..."
}
}
}
}
]
[
{
"dataset": {
"name": "...",
"formatShort": "...",
"formatLong": "...",
"path": "...",
"numberOfFeatures": 0,
"type": "...", // no_geom
"attributes": [
{
"name": "...",
"type": "...",
"alias": "...",
"length": 0, // optionnel
"precision": 0, // optionnel
"scale": 0, // optionnel
"isNullable": true, // optionnel
"editable": true, // optionnel
"required": true, // optionnel
"domain": "...", // optionnel
"defaultValue": "..." // optionnel
}
],
"esriVersion": "...", // ESRI uniquement
"warnings": { // optionnel, si SRS non résolu
"coordsys": {
"EPSG": "...",
"name": "...",
"wkt": "..."
}
}
}
}
]
Esse subprograma, localizado no diretório de instalação do serviço Isogeo, consiste em :
- um arquivo de aplicativo
.exe - uma pasta
_internalque contém as DLLs necessárias para executar o aplicativo
Conforme indicado aqui, a execução do aplicativo não deve ser bloqueada na máquina que hospeda o serviço Isogeo para que o Scan Isogeo funcione.
Descrição¶
O aplicativo e seu _internal são derivados do :
- empacotamento com o PyInstaller 6,
- em um ambiente Windows,
- um programa escrito em Python 3.
As principais dependências do programa são as seguintes e são atualizadas regularmente:
Redação¶
Os arquivos .json e .log são editados pelo subprograma em uma pasta %programdata%\Isogeo\tmp e excluídos regularmente pelo serviço Isogeo.
Arquivo .log¶
Esses arquivos de registro são usados para ações de suporte no caso de uma falha de processamento.
Arquivos .json¶
O subprograma grava os resultados do processamento nesses arquivos, que são lidos pelo serviço Isogeo.
Fluxos de rede e acesso a dados¶
O subprograma não inicia nenhuma conexão de saída com a Internet e não entra em contato com nenhum serviço externo pertencente ao editor.
Ele não abre nenhuma porta de escuta nem expõe nenhum serviço de rede.
As únicas comunicações de rede que provavelmente serão realizadas são aquelas necessárias para acessar os dados explicitamente direcionados pelo usuário do Scan Isogeo.
Dependendo da configuração do cliente, isso pode incluir:
- Conexão com um banco de dados relacional (Oracle, PostgreSQL, SQL Server);
- Acesso a um ESRI Enterprise Geodatabase ;
- Acesso a compartilhamentos de rede (SMB) que contêm arquivos de dados.
Essas conexões são feitas:
- para hosts definidos pelo administrador;
- nas portas padrão dos serviços em questão (por exemplo, 1521 para Oracle, 5432 para PostgreSQL, 1433 para SQL Server, 445 para SMB), a menos que especificamente configurado pelo cliente;
- no contexto de segurança da conta que está executando o Isogeo Windows Service.
O subprograma não executa nenhuma varredura de rede, descoberta automática de host ou comunicação com destinos não configurados.
Comportamentos que podem exigir validação de segurança¶
Criação de processos filhos¶
Para processar os dados dos bancos de dados geográficos corporativos ou dos bancos de dados geográficos de arquivos ESRI, o subprograma precisaexplorar os recursos do software ArcGIS Pro, que deve ser instalado e licenciado na mesma máquina que o serviço do Windows. Para fazer isso, ele aciona a execução de scripts pelo interpretador Python instalado com o software ArcGIS Pro.
Info
A recuperação do local do interpretador Python instalado com o software ArcGIS Pro está documentada aqui.
Os scripts Python executados estão localizados na pasta _internal. A biblioteca pywin é usada para evitar que esses processos filhos fiquem órfãos se o processo pai for interrompido.
Redefinição do diretório de pesquisa de DLL¶
Paraevitar conflitos de DLL entre a sub-rotina e o interpretador Python do ArcGIS Pro que ela usa, as seguintes linhas foram adicionadas ao código-fonte:
if sys.platform == "win32":
import ctypes
ctypes.windll.kernel32.SetDllDirectoryW(None)
Esse código restaura o comportamento padrão do Windows para a busca de DLLs. Essa é a maneira mais segura de garantir que o interpretador Python do ArcGIS Pro acesse suas próprias DLLs.