Mais

Obtendo o valor máximo de onde os polígonos se cruzam no MapInfo

Obtendo o valor máximo de onde os polígonos se cruzam no MapInfo


Estou tentando fazer uma consulta de interseção em duas camadas de polígono no MapInfo. Um é uma camada de edifícios e o outro são triângulos de malha 2d. Quero obter a profundidade máxima de qualquer um dos triângulos que cruzam a camada de edifícios. Como várias malhas se cruzam com um único polígono de edifício, acabo com várias entradas desse polígono de edifício na tabela de fundo, com cada entrada duplicada tendo uma profundidade diferente correspondendo ao triângulo com o qual ela se cruza.

Existe uma maneira de automatizar o processo para que eu possa ter uma camada de edifícios com a profundidade máxima para esse edifício correspondente ao triângulo (malha 2d) com a profundidade máxima?


Certamente você pode. Adicione uma coluna à sua tabela de edifícios chamada MaxDepth (ou como você quiser chamá-la) do tipo correto, presumo que Float. Em seguida, use Tabela> Atualizar coluna e use o seguinte na caixa de diálogo 'Atualizar coluna'.

  • Tabela para atualizar: Edifícios
  • Coluna a atualizar: MaxDepth
  • Obtenha o valor da tabela: Triângulos de malha
  • Clique no botão 'Unir…' e selecione 'Onde o objeto intercepta o objeto…'
  • Calcular: Máx
  • of: MaxDepth (ou qualquer que seja a coluna de profundidade é chamada na tabela de malha)

Agora você deve ter a profundidade máxima de qualquer um dos triângulos de interseção atribuídos a cada edifício.


Você pode preparar seus próprios arquivos de linha ou vetor seguindo o formato mostrado abaixo:

nome1, nome2 - rótulos de arquivo arbitrários de até 16 caracteres, cada um entre aspas simples ou duplas. O programa não usa esta informação.

NSEG - número de pares de coordenadas que descrevem o limite ou linha. O número máximo é 31.000.

LON, LAT - longitude e latitude do ponto inicial de um segmento de linha que descreve o limite. Eles estão em graus decimais onde a longitude leste é considerada positiva, a longitude oeste é negativa, a latitude norte positiva e a latitude sul negativa (datum WGS84).

Arquivos de linha podem ser usados ​​para descrever limites fechados ou polígonos. O formato do arquivo é o mesmo, exceto que a última coordenada deve ser igual à primeira. O programa desenha o limite conectando as coordenadas listadas com linhas retas. O nome desses arquivos deve terminar com .BNA.

Ao fazer estudos de rota, esses arquivos também podem ser usados ​​para definir uma altura da antena para cada ponto ao longo da rota. Faça uma cópia do arquivo .BNA que descreve a rota e, em seguida, anexe o valor da altura média do nível do mar a cada linha de par de coordenadas. Salve este arquivo usando o mesmo nome do arquivo original, mas com um .ELEV extensão.


MapInfo para Power Mac v4 Where2.0Now - Encontrando o calor em mapas temáticos

MapInfo for Power Mac v4 Características Acesso local e remoto a dados Leia diretamente dBase, Lotus 1-2-3, Microsoft Excel, ASCII delimitado em formatos nativos Geocodificação Crie pontos Geocodifique para endereço, CEP, setor censitário, opções de correspondência definidas pelo usuário Criação de mapas e Edição de registro de mapa raster e exibição de .GIF, .JPEG, .TIFF, .PCX, .BMP, .TGA, .BIL Importação de gráficos DXF A digitalização para criar imagens vetoriais suporta digitalizadores Rolagem automática para criar ou editar objetos maiores do que a janela atual. objeto com o mouse ou digitalizador Clonar o mapeamento para copiar a janela do mapa atual Personalizar os objetos do mapa (padrões de preenchimento, tipos de linha, símbolos, fontes True Type) Funções de edição de mapa: remodelar objetos, ajustar para edição, mover objetos, selecionar vários nós para exclusão, sobrepor nós , copiar objetos, criar polilinhas a partir de regiões, criar regiões a partir de polilinhas, suavizar & # x2F unsmooth, reverter tabela, limpar objetos de mapa apenas Visualização de dados Crie mapas temáticos usando sombreamento variado, caractere de barra ts, gráficos de pizza, densidades de pontos, símbolo graduado e valores individuais Classificação de intervalo de mapas com base em contagem igual, intervalos iguais, ponto de inflexão, quebras naturais, desvio padrão, quantil, definido pelo usuário Combine opções temáticas para criar mapas que exibem várias variáveis tabelas Junções temáticas baseadas em: Contagem, soma, valor, média, min & # x2Fmax, média ponderada, soma proporcional, média proporcional, média ponderada proporcional Anexar dados a qualquer objeto Múltiplas visualizações Dinamicamente vinculadas & ampquothot & ampquot visualizações de mapa, linha e coluna de gráfico, gráfico Página exibição de layout Navegador de gerenciamento de distrito & # x2Fwindow display Janela de legenda Janela de estatísticas de resumo Janela de comando MapBasic Definir zoom de exibição de camada Faixa de zoom de 55 pés a 100.000 milhas Definir ordem de exibição de camada Ver centenas de camadas Camadas de mapa contínuas Escape from map redesenhar 18 projeções disponíveis Transformação em tempo real & # x2Fdisplay Sobrepor projeções diferentes Converter entre projeções Capacidades de análise Obter informações rmação sobre qualquer objeto Donut & # x2Fisland polígonos suportados Operações de sobreposição de polígono Agregação de dados & # x2F desagregação, apagar, apagar fora, dividir, combinar, sobrepor nós Buffers: crie buffers em torno de qualquer objeto ou grupo de objetos - pontos, linhas, polilinhas, polígonos Seleção geográfica Encontre qualquer objeto Pontos dentro do raio & # x2Fpolygon Lines & # x2Fpolylines dentro do raio & # x2Fpolygon Polígonos dentro do raio & # x2Fpolygon SQL & # x2F Consultas de linguagem de consulta avançada com base em expressões, execute agregações, exiba campos derivados, execute subconsultas, faça junções de várias tabelas e execute une os operadores de consulta relacional Operadores padrão e geográficos Contém, contém inteiramente, dentro, inteiramente dentro de intersecção & # x2Funion


Seções¶

  • Problema 1: carregue e analise o arquivo CSV para obter colunas úteis

  • Problema 2: polígonos para mapear

  • Problema 3: Resuma os danos por área

Problema 1: Analise o arquivo CSV para obter colunas úteis¶

O principal problema é que a) todos os campos são campos de texto / string e não podem ser tratados imediatamente. Normalmente, precisamos de dados numéricos para fins analíticos e geográficos.

Para ler até mesmo o CSV no Pandas, precisamos empregar alguns comandos de baixo nível:

Agora você tem o dataframe para trabalhar. Verifique coisas como ‘df.head (5)’, ‘df.columns’ e ‘df.dtypes’ para ver os dados.

Existem muitas colunas interessantes para analisar, como data e hora do dia do crime, município, região ou cidade, informações específicas sobre o tipo de crime, os danos causados ​​e pares de coordenadas. Vamos nos concentrar agora nos pares de coordenadas Lest_X e Lest_Y bem como os danos causados Kahjusumma.

Esses campos são texto / sequências e geralmente contêm dois números, vinculados a um traço / menos, por exemplo, ‘6589000-6589499’ ou ‘0-499’. Em Python, você pode dividir strings usando a função de divisão.

Agora, essas variáveis ​​são tecnicamente ainda objetos de texto / string. Para extrair e converter o número, que é mantido como um objeto de texto atualmente, podemos tentar convertê-lo em tipos de dados numéricos.

Se pegarmos uma coluna Pandas DataFrame inteira, podemos usar a função Pandas to_numeric.

Se você gostaria de lidar com isso em um nível de elemento, você poderia fazer o cast / conversão em sua função, usando as funções de cast integradas do Python int () ou float ():

Às vezes, os dados não estão em uma forma ou valor que possa ser convertido / convertido em números. Neste caso, obterá um Erro, a chamada Exceção. Em Python, você pode pedir perdão facilmente usando try: / except: block:

Idealmente, você definirá algumas funções e as aplicará uma por uma para criar colunas adicionais onde eventualmente manterá os valores numéricos.

Problema 2: Polígonos para mapear¶

Agora você tem os valores mínimo e máximo para as coordenadas X, para as coordenadas Y e para os valores de dano.

Para as coordenadas geográficas, você precisa construir os polígonos.

Como eles são quadrados e são dados apenas como valores de caixa delimitadora, podemos usar imediatamente a função de caixa de Shapely.

Então você pode criar um GeoDataFrame adequado. As coordenadas foram fornecidas no sistema Estonian National Grid, EPSG: 3301.

Problema 3: Resuma os danos por área¶

atualmente, você tem mais de 40000 registros / polígonos. No entanto, como você pode ou não ter percebido, existem muitos que possuem a mesma geometria, portanto, crime relatado na mesma área.

Encontre um valor significativo para resumir os danos médios por quadrado.

& copiar Copyright 2020, Landscape Geoinformatics Última atualização em 17 de novembro de 2020.


Metadados: Águas Subterrâneas do Território do Norte - Aquíferos 1: 2.000.000

Este conjunto de dados espaciais, levantado em uma escala de 1: 2.000.000, fornece informações poligonais sobre as águas subterrâneas especificamente (tipos de aquíferos e rendimentos) do Território do Norte. O objetivo deste levantamento foi mapear, descrever e avaliar as informações de recursos hídricos para planejamento e gestão

  • Coordenada de limite norte: -10
  • Coordenada de Limite Sul: -26
  • Coordenada delimitadora leste: 138
  • Coordenada de limite oeste: 129

Frequência de manutenção e atualização: conforme necessário

Data de início da moeda dos dados: 01-01-2008

Data de término da moeda dos dados: 26/06/2015

Baixe o pacote de dados espaciais (contém dados espaciais, mapas e relatórios) via https://data.nt.gov.au/

Você está licenciado para usar os produtos geoespaciais DENR nos termos e condições estabelecidos em: Creative Commons Atribuição 4.0 Licença Pública Internacional (CC BY 4.0) em: https://creativecommons.org/licenses/by/4.0/legalcode

Se você não concorda com os termos e condições, você não deve usar os produtos geoespaciais.

Você é livre para copiar, comunicar e adaptar o material licenciado, desde que cumpra os termos da licença (incluindo Atribuição) e atribua o material licenciado usando a declaração:

Fornecido pelo Departamento de Meio Ambiente e Recursos Naturais. Copyright Northern Territory Government.

Linhagem: As unidades aqüíferas derivadas da geologia digital NTGS 1: 250.000 e de mapas de geologia digitalizados na escala 1: 250.000. Os tipos de rocha com propriedades de aquífero semelhantes foram agrupados. Os limites foram então modificados usando informações do poço de água. Em certas áreas, os limites do aquífero foram retirados dos mapas existentes de água subterrânea. & # 13

O polígono dos limites da unidade do mapa coletado via sistema de informações geográficas (ArcGIS). Atributos de recursos hídricos essenciais anexados ao limite das unidades do mapa com atributos adicionais exclusivos para pesquisas individuais. O ESRI Geodatabase, MapInfo Table e Google Earth KML derivados usando FME Workbench. O mapa publicado é derivado do ESRI Shape usando o software Microstation Bentley MicroStation Design (V8). & # 13

As informações de atributos principais associadas ao conjunto de dados de desenvolvimento de águas subterrâneas, águas superficiais e água foram derivadas da legenda e anotações do mapa original. Nome do arquivo NT-Groundwater-Maps_2000k_L94.dgn

Precisão posicional: Variável no mapa, dependendo da precisão dos dados geológicos originais e da densidade do poço.

Precisão do atributo: a precisão das informações do atributo é considerada média. As informações de rendimento do furo e "tipos de aquíferos" são baseados em "conhecimento especializado. & # 13

Esta nota é relevante para os seguintes atributos no conjunto de dados & # 13
'Em branco ou zero em GEO_FORM, GEO_LABEL, STDTDS_MIN, STDTDS_MAX e ACTTDS_DES indicam valores não definidos. & # 13'

Consistência lógica: ferramentas de edição GIS foram usadas para retificar todos os overshoots e undershoots no trabalho em linha. As regras de topologia de polígono aplicadas não devem se sobrepor, não devem ter lacunas e cada polígono tem apenas um rótulo.


2 respostas 2

A explicação é a seguinte: Para calcular a Precisão Média Média (mAP) no contexto da Detecção de Objeto, você deve calcular a Precisão Média (AP) para cada classe e, em seguida, calcular a média em todas as classes. A chave aqui é calcular o AP para cada classe, em geral para calcular Precisão (P) e Rechamada (R) você deve definir o que são: Verdadeiros Positivos (TP), Falsos Positivos (FP), Verdadeiro Negativo (TN) e Falso Negativo (FN). No cenário de Detecção de Objeto do Desafio Pascal VOC são os seguintes:

  • TP: são as caixas delimitadoras (BB) em que a interseção sobre a união (IoU) com a verdade fundamental (GT) está acima de 0,5
  • FP: dois casos (a) BB em que o IoU com GT está abaixo de 0,5 (b) o BB que possui IoU com um GT já detectado.
  • TN: não há verdadeiros negativos, espera-se que a imagem contenha pelo menos um objeto
  • FN: aquelas verdades de solo para as quais o método falhou em produzir um BB

Agora, cada BB previsto tem um valor de confiança para a classe dada. Portanto, o método de pontuação classifica as previsões por ordem decrescente de confiança e calcula P = TP / (TP + FP) e R = TP / (TP + FN) para cada classificação possível k = 1 até o número de previsões. Portanto, agora você tem um (P, R) para cada posto, aqueles P e R são a curva & quotraw & quot Precision-Recall. Para calcular a curva P-R interpolada para cada valor de R, você seleciona o P máximo que tem um R '& gt = R. correspondente

Existem duas maneiras diferentes de amostrar pontos da curva P-R de acordo com o doc devkit do voc. Para o VOC Challenge antes de 2010, selecionamos o P máximo obtido para qualquer R '& gt = R, que R pertence a 0, 0,1,. 1 (onze pontos). O AP é então a precisão média em cada um dos limites de Rechamada. Para VOC Challenge 2010 e posteriores, ainda selecionamos o P máximo para qualquer R '& gt = R, enquanto R pertence a todos os valores de rechamada únicos (incluindo 0 e 1). O AP é então o tamanho da área sob a curva P-R. Observe que, no caso de você não ter um valor de P com Recall acima de alguns dos limites, o valor de Precisão é 0.

Por exemplo, considere a seguinte saída de um método dada a classe & quotAeroplane & quot:

Além de não detectar caixas delimitadoras nas duas imagens, então temos FN = 2. A tabela anterior é a classificação ordenada pelo valor de confiança das predições do método GT = 1 significa que é um TP e GT = 0 FP. Portanto, TP = 5 (BB1, BB2, BB5, BB8 e BB9), FP = 5. Para o caso de classificação = 3, a precisão cai porque BB1 ​​já foi detectado, então mesmo se o objeto estiver de fato presente, ele conta como um PF. .

Dados os resultados anteriores: Se usarmos o caminho antes de voc2010, os valores de precisão interpolados são 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Então AP = 5,5 / 11 = 0,5 para o classe de & quotAeroplanos & quot. Do contrário, se usamos o caminho desde o voc2010, os valores de precisão interpolados são 1, 1, 1, 0,5, 0,5, 0,5, 0 para sete rechamadas exclusivas que são 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1. Então AP = (0,14-0) * 1 + (0,29-0,14) * 1 + (0,43-0,29) * 0,5 + (0,57-0,43) * 0,5 + (0,71-0,57) * 0,5 + (1-0,71) * 0 = 0,5 para a classe de & quotAeroplanos & quot.

Repita para cada classe e então você tem o (mAP).

Mais informações podem ser encontradas nos links 1, 2. A seguir, você também deve verificar o artigo: O Desafio PASCAL Visual Object Classes: Uma Retrospectiva para uma explicação mais detalhada.


Nosso blog

A primeira vez que fui pago para fazer o PostgreSQL paralelamente, gastei a maior parte do dinheiro na hipoteca (chato, eu sei), mas consegui um pequeno presente: uma caixa de DVDs de um antigo programa de televisão favorito . Eles se tornaram parte do meu ritual noturno, assistindo a um episódio enquanto limpava a cozinha antes de dormir. O show apresenta três recrutas militares, um dos quais, Frank, é universalmente odiado. Em um episódio, ficamos sabendo que Frank foi inesperadamente transferido, deixando seus dois companheiros de quarto a responsabilidade nada invejável de recolher os pertences de Frank e enviá-los para sua nova atribuição. Depois de algumas resmungos, eles se decidem a trabalhar, e um deles pega um short do varal, dizendo: “Um short, condição perfeita: meu”, e ele joga o short em sua própria cama. Pegando outro par, ele diz: “Um par de shorts. Buracos, botões faltando: Frank's. ”

O outro começa nas meias: “Um par de meias, perfeito estado: meu. Um par de meias, buracos: Frank's. Você sabe, isso vai ser muito mais fácil do que eu pensava. ”

“É questão de ter um sistema”, responde o primeiro.

Acho que a maioria das coisas vai melhor quando tenho um sistema, como uma tarefa recente de escrita de consulta deixou claro. Envolveu dados do Instituto Nacional de Estadística y Geografía, ou INEGI, uma organização do governo mexicano encarregada de coletar e administrar estatísticas e informações geográficas em todo o país. O conjunto de dados continha o contorno geográfico de cada quarteirão da Cidade do México, junto com dados demográficos e estatísticos para cada quarteirão: população total, uma pontuação numérica que representa o nível educacional médio, quanto do quarteirão tinha calçadas e paisagismo, se as casas tinham acesso aos sistemas municipais de esgoto e água, etc. Queríamos exibir os dados em uma Galáxia Líquida de uma forma significativa, então carreguei tudo em um banco de dados PostGIS e construí uma visualização simples mostrando cada quarteirão como um polígono extrudado do terra, com a altura e a cor do polígono proporcionais ao escore educacional daquele quarteirão, em comparação com a média da cidade.

Não foi totalmente surpresa que, com tantos polígonos, o desempenho de renderização tenha sofrido um pouco, mas acima de tudo, a tela estava simplesmente confusa. Esta imagem é apenas um dos 16 bairros da Cidade do México.

Com tanta coisa acontecendo na imagem, é difícil para o usuário extrair qualquer informação significativa. Então, mudei para uma técnica que havíamos usado no passado: reprocessar a área geográfica em quadrados de grade, extrapolar a estatística de interesse sobre a área do quadrado e representá-la novamente como um conjunto de quadrados. O resultado é essencialmente um mapa de calor tridimensional, muito mais fácil de compreender e, incidentalmente, de renderizar.

Como na maioria das tarefas de programação, é útil ter um sistema, então comecei esboçando como exatamente produzir o resultado desejado. Eu planejei sobrepor os recursos no conjunto de dados com uma grade e, em seguida, para cada quadrado na grade, encontrar todos os quarteirões da cidade que se cruzam, um número que representa o nível de escolaridade dos residentes daquele quarteirão e qual porcentagem da área total do quarteirão se cruza cada quadrado da grade. A partir dessas informações, posso extrapolar a contribuição desse bloco para a pontuação educacional total do grid square. A derivação precisa da pontuação não é importante para nossos propósitos aqui, basta dizer que é um valor numérico sem nenhuma unidade associada particular, cujo valor está em sua relação com as pontuações de outros blocos. Os residentes de um bloco com pontuação alta são, em média, provavelmente mais educados do que os residentes de um bloco com pontuação mais baixa. Para esta consulta, um bloco com um nível educacional médio de, digamos, 100 "pontos", contribuiria com todos os 100 pontos para um quadrado de grade se todo o bloco estivesse dentro desse quadrado, 60 pontos se apenas 60% dele estivesse dentro do quadrado , e assim por diante. No final, devo ser capaz de somar todas as pontuações de cada quadrado da grade, classificá-los em relação a todos os outros quadrados da grade e produzir uma visualização.

Eu sofro do hábito decididamente masoquista de fazer tudo o que posso em uma única consulta, enquanto mantenho um desejo por código legível e sustentável. Colocar tudo em uma consulta nem sempre é uma boa técnica, como espero ilustrar em uma postagem futura no blog, mas funcionou bem neste caso e fornece um bom exemplo que eu gostaria de compartilhar, de uma maneira de usar a Tabela Comum Expressões. Eles fazem para o SQL o que as sub-rotinas fazem para outras linguagens, separando as tarefas em unidades distintas. Uma expressão de tabela comum se parece com isto:

Conforme mostrado por este exemplo de consulta, a palavra-chave WITH precede uma lista de consultas nomeadas entre parênteses, cada uma das quais funciona ao longo da vida da consulta como se fosse uma tabela completa. Essas pseudotabelas são chamadas de Expressões de Tabela Comuns e me permitem fazer uma tabela para cada função distinta no que se provará uma consulta bastante complicada.

Vamos examinar os elementos de nossa nova consulta, peça por peça. Primeiro, quero armazenar os resultados da consulta, para poder criar diferentes visualizações sem recalcular tudo. Então, farei essa consulta criar uma nova tabela preenchida com seus resultados. Nesse caso, chamei a tabela de grid_mza_vals.

Agora, para meu primeiro CTE. Esta consulta envolve alguns parâmetros selecionados pelo usuário, e eu quero uma maneira fácil de ajustar essas configurações enquanto faço experiências para obter os melhores resultados. Vou querer mexer com o número de quadrados da grade no resultado geral, bem como os coeficientes usados ​​posteriormente para calcular a altura de cada polígono. Portanto, meu primeiro CTE é chamado simplesmente de params e retorna uma única linha, composta por esses parâmetros.

O valor numsq representa o número de quadrados da grade ao longo de uma borda da minha grade geral, discutiremos os outros valores mais tarde. Eu escolhi um número relativamente pequeno de quadrados de grade totais para processamento mais rápido enquanto construí o resto da consulta. Posso torná-lo mais detalhado, se quiser, depois que todo o resto funcionar.

A próxima coisa que quero é uma sequência de números de 1 a numsq:

Agora posso unir o intervalo CTE a ele mesmo, para obter as coordenadas de cada quadrado da grade:

Ocasionalmente, gosto de verificar meu progresso, executando quaisquer partes da consulta que já escrevi para revisar seu comportamento. Os CTEs tornam isso conveniente, porque posso ajustar a cláusula final da consulta para selecionar dados de qualquer um dos CTEs em que estou interessado no momento. Aqui está a consulta até agora:

Até agora tudo bem. O gridix CTE retorna coordenadas para cada célula na grade, de zero ao valor numsq de meus parâmetros CTE. A partir dessas coordenadas, se conheço os limites geográficos do conjunto de dados e o número de quadrados em cada aresta, posso calcular a latitude e a longitude dos quatro cantos de cada quadrado da grade. Primeiro, preciso encontrar os limites geográficos dos dados. Meu conjunto de dados reside em uma tabela chamada manzanas, espanhol para “quarteirão” (e também “maçã”). Cada linha contém um atributo geográfico contendo um polígono que define os limites do bloco e vários outros atributos, como a pontuação de educação que mencionei. No PostGIS, existem várias maneiras diferentes de encontrar a caixa delimitadora que eu quero, aqui está a que usei.

E, apenas para verificar meus resultados:

Portanto, os dados em questão se estendem de cerca de 99,35 a 98,95 de longitude oeste e 19,12 a 19,59 de latitude norte. Agora vou calcular os limites de cada quadrado da grade, compor uma representação de texto para o quadrado no formato de texto conhecido e converter o texto em um objeto de geometria PostGIS. Há outra maneira de fazer isso, muito mais simples e provavelmente muito mais rápida, que espero detalhar em uma postagem futura no blog, mas servirei por agora.

E, novamente, verificarei o resultado SELECIONANDO grid_ix, ewkt e geom, da primeira linha do gridgeom CTE.

Não reivindicarei a capacidade de traduzir o objeto de geometria conforme representado acima, mas o valor ewkt parece correto, então vamos continuar. Em seguida, preciso cortar os blocos em pedaços, correspondendo às partes de cada bloco que pertencem a um único quadrado de grade. Portanto, um bloco inteiramente em um quadrado retornará uma linha na próxima consulta, um bloco que cruza dois quadrados retornará duas linhas. Cada linha incluirá as geometrias do bloco, o quadrado e a interseção dos dois, a área total do bloco, a área da interseção e a pontuação educacional total do bloco.

Aqui está um exemplo desses resultados:

Esses resultados, que admito ter selecionado com algum cuidado, mostram um único bloco, o número 61853, que fica na fronteira entre dois quadrados de grade. Agora vamos calcular a pontuação de educação para cada fragmento de bloco e, em seguida, dividir os fragmentos em grupos com base na grade quadrada a que pertencem e agregar os resultados. Fiz isso em dois CTEs separados.

Este último CTE fornece resultados como estes:

Agora, resta transformar esses resultados em uma visualização. Eu gostaria de atribuir a cada polígono uma altura e uma cor. Para tornar a visualização mais fácil de entender, vou dividir os resultados em um punhado de classes e atribuir uma altura e uma cor a cada classe.

Usando um gerador de paleta de cores online, criei uma sequência de seis cores, que vão do branco ao verde semelhante à barra verde da bandeira mexicana. Outro CTE retornará essas cores como uma matriz, e ainda outro atribuirá os quadrados da grade a grupos com base em sua pontuação calculada. Finalmente, um terceiro selecionará a cor apropriada da matriz usando esse valor de grupo. Neste ponto, os leitores provavelmente estão pensando “chega de já parar de dividir tudo em CTEs cada vez menores”, ao que eu só posso dizer: “Sim, você pode estar certo.”

A função de janela ntile () é útil para esse tipo de coisa. Ele divide a partição fornecida em baldes e retorna o número do balde para cada linha. Aqui, a partição consiste em todo o conjunto de dados que classificamos por pontuação educacional para garantir que os quadrados da grade de pontuação baixa recebam intervalos de números baixos. Note também que posso alterar as cores, adicionando ou removendo grupos, simplesmente ajustando as cores CTE. Teoricamente, isso poderia ser útil, se eu decidisse que não gosto do número de níveis ou do esquema de cores, mas é um recurso que nunca usei para esta visualização.

Estamos na reta final, finalmente, e devo esclarecer como pretendo transformar os objetos de banco de dados em KML, utilizáveis ​​em um Liquid Galaxy. Usei ogr2ogr do kit de ferramentas GDAL. Ele converte entre várias fontes de dados GIS diferentes, incluindo PostGIS para KML. Preciso alimentá-lo com a geometria que desejo desenhar, bem como as instruções de estilo e, neste caso, um altitudeMode KML personalizado.

O estilo é um tópico envolvido para nossos propósitos, é suficiente dizer que direi ogr2ogr para usar nossa cor selecionada tanto para desenhar as linhas de nossos polígonos, quanto para preenchê-los. Mas mover a geometria do quadrado da grade para uma altitude correspondente a sua pontuação educacional é bastante fácil, usando a função ST_Force3DZ () do PostGIS para adicionar ao polígono bidimensional até então uma terceira dimensão de valor zero, e ST_Translate () para movê-lo acima da superfície da terra de alguns modos. Então, provavelmente posso terminar isso com uma pergunta final:

Você deve se lembrar de alt_bias e alt_percfactor, os valores com nomes estranhos e até agora inexplicáveis ​​em meus primeiros parâmetros CTE. Usei estes para controlar a distância em que um grupo de polígonos está de outro e para enviá-los para longe o suficiente do solo para evitar o problema de serem obscurecidos por características do terreno. Você também deve se lembrar que esta consulta começou com CREATE TABLE grid_mza_vals AS. comando, o que significa que vamos armazenar os resultados de todo esse processamento em uma tabela, para que ogr2ogr possa acessá-lo. Chamamos ogr2ogr assim:

O driver LIBKML do OGR sabe que um atributo chamado "OGR_STYLE" é uma string de estilo e outra chamada "altitudeMode" é, previsivelmente, o modo de altitude do recurso. Portanto, isso criará um arquivo KML, contendo um marcador para cada linha em nossa tabela grid_mza_tables. Cada marcador consiste em um quadrado colorido, flutuando no ar acima da Cidade do México. Os quadrados vêm em seis níveis diferentes e seis cores diferentes, correspondendo aos nossos dados educacionais originais. Algo assim:

Este é um dos marcadores do KML.

Isso pode ser suficiente, mas fica confuso quando visto de um ângulo baixo, porque é difícil dizer qual quadrado pertence a qual parte do mapa. Eu prefiro que os polígonos sejam “extrudados” do solo, como o KML os chama. Usei um script Perl simples para adicionar o elemento de extrusão a cada polígono no KML, resultando em:

Essa consulta funciona, mas deixa algumas coisas a desejar. Por exemplo, fazer tudo em uma consulta provavelmente não é a melhor opção quando há muito processamento envolvido. O ideal seria calcular as geometrias da grade uma vez e salvá-las em uma tabela em algum lugar, para um processamento mais rápido enquanto construímos o resto da consulta e experimentamos as opções de visualização. Em segundo lugar, o PostGIS fornece uma maneira indiscutivelmente mais elegante de encontrar os quadrados da grade em primeiro lugar, um método que também oferece outras opções para visualizações interessantes. Fique ligado em uma futura postagem no blog que discute esses problemas. Enquanto isso, os CTEs provaram ser uma forma valiosa de sistematizar e modularizar uma consulta muito complicada.


Obtendo o valor máximo de onde os polígonos se cruzam no MapInfo - Sistemas de Informação Geográfica

    em aplicações GIS combinamos dados de diferentes fontes, com diferentes níveis de precisão
      Qual é o impacto do erro em cada camada de dados no resultado final?

      Problema: encontre a melhor rota para um corredor de transmissão de energia de um determinado ponto de origem até um determinado ponto de destino a cerca de 150 km de distância, em uma área do meio-oeste com densidades comparativamente altas de agricultura e assentamento

    • produtividade agrícola (dólares por hectare)
    • liquidação (presença ou ausência)
    • direitos de passagem existentes para linhas de energia (presença ou ausência)

      as regras em cascata agrupam fatores em compostos como "impacto social", "impacto agrícola" e, em seguida, pesam cada grupo em relação aos outros

    bem como condições simples:

    adequação = 0 se liquidação = "presente"

    adequação = 3 se x1 = A e x2 = d adequação = 4 se x1 = B e x2 = d

    • os efeitos da cascata sobre o erro serão complexos
      • os erros pioram, ou seja, se multiplicam?
      • os erros se cancelam?
      • os erros em cada camada são independentes ou estão relacionados?

      • estudos mostraram que a precisão do mapa resultante (porcentagem de pontos com ambas as classes sobrepostas) é um pouco melhor do que 0,90x0,90 = 0,81
      • quando muitos mapas são sobrepostos, a precisão do composto resultante pode ser muito pobre

        isso é verdadeiro se a reclassificação e o operador e forem usados ​​extensivamente, ou se condições simples forem usadas com base em camadas imprecisas

        isso é verdade se a adição ponderada for usada, ou se a reclassificação usar o operador ou
          por exemplo. adequação = 4 se x1 = A ou x2 = d

          como determinar o impacto da imprecisão nos resultados?

        • o impacto do erro no mapa de adequação
        • o impacto do erro na melhor rota

          qual precisão é necessária em cada camada para produzir o nível de precisão exigido no resultado?

          É fácil ver o que uma mudança de unidade significa para a produtividade agrícola em dólares por acre, mas o que isso significa para a classe de vegetação?

          • quanto o resultado muda quando a entrada de dados muda? 2. os pesos
          • quanto o resultado muda quando o peso dado a um fator muda?

          • ou seja, a resposta do resultado a uma mudança em uma das entradas de seu valor mínimo observado para seu máximo
          • por exemplo. suponha que uma camada é assentamento (presente / ausente)
            • definir toda a camada para liquidação = presente e recalcular a adequação e a melhor rota
            • em seguida, defina toda a camada para liquidação = ausente e recalcular
            • a diferença será uma medida da sensibilidade da análise à camada de assentamento

              uma camada pode ser importante em princípio, mas não tem impacto nesta área de estudo
                por exemplo. em princípio, a camada de produtividade agrícola pode ser muito importante no quadro de decisão, mas se toda a terra for igualmente produtiva, então não será importante na prática

              • Aumentar a resolução daria um resultado melhor?
              • o custo da coleta de dados adicional em resolução mais alta seria justificado?
              • podemos atribuir um valor à resolução espacial?

                artefatos são efeitos indesejados que resultam do uso de um GIS de alta precisão para processar dados espaciais de baixa precisão
                  geralmente resultam de erros de posição, não de erros de atributo

                  já que os dados raster têm resolução finita, determinada pelo tamanho do pixel
                    contanto que o tamanho do pixel seja maior do que a precisão da posição dos dados, não corremos o risco de efeitos indesejados ou artefatos

                    muitas vezes têm precisão diferente de exatidão

                  • digitizing
                  • polygon overlay

                    a digitizer operator will not be able to close polygons exactly, or to form precise junctions between lines
                      a tolerance distance must be established, so that gaps and overshoots can be corrected (lines snapped together) as long as they fall within the tolerance distance

                      por exemplo. polygon with a narrow isthmus:

                      por exemplo. two lines close together - which one to snap to?

                      por exemplo. removing overshoot - must look back along line to form correct topology:

                      essentially, we try to find a balance between:

                    1. asking the operator to resolve problems, which slows down the digitizing, and 2. having the system resolve problems, which requires good software and lots of CPU usage

                      some are more successful than others

                    • increases the scale of the map while holding tolerance constant, so problem detail is now bigger than the tolerance
                    • difficult or impossible to get error-free enlargement cheaply and easily

                      por exemplo. if the following is digitized as one arc then it there is no intersection

                    • program then only needs to check for snaps and overshoots at ends of arcs
                    • tedious for the digitizer operator

                    • press a different digitizer button when a point needs to be snapped
                    • wait for system response indicating successful snap

                    • requires fast, dedicated processor
                    • computing load gets higher as database accumulates
                    • requires continuous display of results
                    • no good for imported datasets

                    • por exemplo. two labels in a polygon indicates that it's really two polygons, not one with a narrow isthmus
                    • might use expectations about polygon shape
                    • puts heavy load on the processor

                      a cursor in the form of a pen is a good practical solution

                      covered algorithms for dealing with sliver polygons earlier

                    • this departs from the database model in which every set of polygons is thought of as a different layer
                    • por exemplo. suppose a woodlot (polygon) shares part of its boundary with a road (line)
                      • the shared part becomes a primitive object which is stored only once in the database, and shared by the two higher level features

                      • need an operation which allows two separate primitives to be identified as shared and replaced by one
                      • need a converse operation to unshare a primitive if one version of the line must be moved and not the other

                        how to store information on accuracy in a database?

                        uncertainty in each cell's attributes might be stored by giving each cell a set of probability attributes, one for each of the possible classes
                          in classified remote sensing images this information can come directly from the classification procedures

                          can be stored once for the whole map

                        • there are five potential levels for storage of uncertainty information in a vector database:
                          • map
                          • class of objects
                          • polygon
                          • arc
                          • apontar

                            positional accuracy at one level may not imply similar accuracy at other levels
                              positional accuracy about a point says little about the positional accuracy of an arc

                              similarly, positional accuracy at the polygon level may cause confusion along shared arcs

                            • arc (e.g. width of transition zone between two polygons)
                            • class of objects (e.g. error in position of railroads)
                            • map as a whole (e.g. all boundaries and lines on the map have been digitized to specified accuracy)

                            • uncertainty in an object's attributes can be stored as:
                              • an attribute of the object (e.g. polygon is 90% A)
                              • an attribute of the entire class of objects (e.g. soil type A has been correctly identified 90% of the time)

                              Burrough, P.A., 1986. Principles of Geographical Information Systems for Land Resources Assessment. Clarendon, Oxford. Chapter 6 on error in GIS.

                              Chrisman, N.R., 1983. "The role of quality information in the long-term functioning of a geographic information system," Cartographica 21:79.

                              Goodchild, M.F. and S. Gopal, editors, 1989. The Accuracy of Spatial Databases, Taylor and Francis, Basingstoke, UK. Edited papers from a conference on error in spatial databases.

                              1. Define the difference between sensitivity to error in principle and in practice.

                              2. Imagine that you represent a community trying to fight the proposed route of the powerline discussed in this unit. What arguments would you use to attack the power utility company's methods?

                              3. Compare the methods available in any digitizing system to which you have access, to those discussed in this unit. Does your system offer any significant advantages?

                              4. Some GIS processes can be very sensitive to small errors in data. Give examples of such processes, and discuss ways in which the effects of errors can be managed.


                              Please send comments regarding content to: Brian Klinkenberg
                              Please send comments regarding web-site problems to: The Techmaster
                              Last Updated: August 30, 1997.


                              Programming a ToolValidator class

                              For an overview of the ToolValidator class and use of parameter methods, see Customizing script tool behavior.

                              Accessing the tool parameters

                              Every tool parameter has an associated parameter object with properties and methods that are useful in tool validation. Parameters are contained in a Python list. The standard practice is to create the list of parameters in the ToolValidator class __init__ method, as shown in the code below.

                              You can also access parameters in your script (as opposed to the ToolValidator class) as follows:

                              The only reason to access the parameter list within a script is to set the symbology property.
                              Learn more about setting symbology in scripts

                              Order of parameters

                              A tool's parameters and their order are defined in the Parameters tab of the tool's properties, as illustrated below.

                              NOTE: The list of parameters is 0-based, so the first parameter is at position zero in the list. So, to access the third parameter

                              Métodos

                              Method name Usage description
                              SetErrorMessage(message:string) Marks the parameter as having an error (a red X) with the supplied message. Tools do not execute if any of the parameters have an error.
                              SetWarningMessage(message:string) Marks the parameter as having a warning (a yellow triangle) with the supplied message. Unlike errors, tools do execute with warning messages.
                              SetIDMessage(messageType: string, messageID: string, , ) Allows you to set a system message. The arguments are the same as the AddIDMessage method.
                              ClearMessage() Clears out any message text and sets the status to informative (no error or warning).
                              HasError() Returns true if the parameter contains an error.
                              HasWarning() Returns true if the parameter contains a warning.
                              IsInputValueDerived() Returns true if the tool is being validated inside a Model and the input value is the output of another tool in the model.

                              Propriedades
















                              Property name Read/Write Value(s) Descrição
                              NameString Parameter name as defined on the Parameters tab of the tool's properties.
                              DirectionString: "nput, Output Input/Output direction of the parameter as defined on the Parameters tab of the tool's properties.
                              DatatypeString Data type as defined on the Parameters tab of the tool's properties.
                              ParameterTypeString: Required, Optional, Derived Type as defined on the Parameters tab of the tool's properties.
                              ParameterDependencies Python List A list of indexes of each dependent parameter.
                              Valor Value object The value of the parameter.
                              DefaultEnvironmentNameString Environment as defined on the Parameters tab of the tool's properties.
                              Enabledboleano False if the parameter is dimmed (unavailable).
                              Altered boleano True if the user has modified the value.
                              HasBeenValidated boleano True if the internal validation routine has checked the parameter.
                              Categoria String The category of the parameter.
                              Schema GP Schema object The schema of the output dataset.
                              Filter GP Filter object The filter to apply to values in the parameter.
                              Simbologia String The pathname to a layer file (.lyr) used for drawing the output.
                              MensagemString The message to be displayed to the user. See SetErrorMessage() and SetWarningMessage() above.

                              Some code examples are shown below. For other coding examples, see Customizing script tool behavior.

                              ToolValidator properties versus script tool properties

                              A parameter's default value, filter, symbology, and dependencies can be set in both the Parameters tab of the script tool's properties dialog and in the ToolValidator class, as illustrated below.

                              Properties you set in ToolValidator always override those set in the script tool properties dialog box. For example, if you set the default value of a parameter to BLUE in the script tool properties dialog box and reset it to RED in initializeParameters(), the default value is RED. Once initializeParameters() has been called, the script tool properties dialog box will display RED as the default value. If you (or your users) get into the situation where the changes you make to one of these four parameter properties in the script's properties dialog box do not get saved, it is probably because the property is overridden within the ToolValidator class.

                              ParameterDependencies


                              • For an output dataset parameter whose type is Derived, the dependency is the index of the parameter from which the output is to be derived.
                              • For certain input data types, the dependency is the index of the parameter containing the information used by the control, as shown in the table below.

                              Input data type Dependent data type Descrição
                              Field or SQL Expression Table The table containing the fields
                              INFO Item or INFO Expression INFO Table The INFO table containing the items
                              Coverage Feature Class Coverage The coverage containing features
                              Area Units or Linear Units GeoDataset A geographic dataset used to determine the default units
                              Coordinate System Workspace A workspace used to determine the default coordinate system
                              Network Analyst Hierarchy Settings Network Dataset The network dataset containing hierarchy information
                              Geostatistical Value Table Geostatistical Layer The analysis layer containing tables

                              Dependencies are typically set in the initializeParameters() method:

                              Valor


                              This is the value of the parameter that the user entered or you set programmatically. You can set the value in initializeParameters(), in which case it serves as the initial default value for the parameter. You can also set values in updateParameters() in response to user input (click here for an example).
                              Don't set a parameter value in updateMessages() since the value will not be validated by the internal validation routine.
                              A value is an object that has a string representation. The code snippet below tests whether the value is equal to the string Get Spatial Weights From File. This test works because the parameter data type is a string.

                              The test in the above code would not work if the parameter data type is a feature class, or any value representing a dataset. Values that represent data on disk, such as feature classes and rasters, need to be converted to strings before doing string operations. The built-in Python function str() converts value objects to strings, as follows:

                              You only need to use the str() function for values with data types that represent datasets. For these types of values, the str() function returns the catalog path to the dataset. You don't need to use this function for other data types, such as long or linear unit, since these data types don't represent datasets and are automatically converted to strings.

                              NOTE: When using the geoprocessing describe method, never use the string representation of the value.

                              Incorrect (str function used)

                              You should not use the string representation for datasets (which yields the catalog path to the dataset) since the dataset may not exist—it may be a model variable, and the model has to be run before the dataset exists on disk. If you use the string representation for the dataset, describe may fail since the dataset may not yet exist on disk.

                              NOTE: Don't use geoprocessing object methods that take a catalog path, such as ListFields, in ToolValidator. The dataset may not exist when your tool is validated in ModelBuilder, and the method may fail. (In the case of ListFields, you can use the Describe Fields method instead.)

                              When you are testing strings for equivalence, you should use case-insensitive comparisons. The code below shows using the Python lower() function to lowercase the shape type of a feature class and comparing lowercase strings. (Alternatively, you can use the upper() function to compare uppercase strings.)

                              Altered


                              Altered is true if the user changed the value of a parameter—by entering an output path, for example. Once a parameter has been altered, it remains altered until the user empties (blanks out) the value, in which case it returns to being unaltered. Programmatically changing a value with validation code does not change the altered state. That is, if you set a default value for a parameter, the altered state of the parameter does not change.
                              Altered is used to determine whether you can change the value of a parameter. As an example, suppose a tool has a feature class parameter and a keyword parameter. If the feature class contains points or polygons, the keywords are RED, GREEN, and BLUE, and if lines, ORANGE, YELLOW, PURPLE, and WHITE.
                              Suppose the user enters a point feature class. If the keyword parameter is unaltered, you set the value to RED, since it's the default value.
                              If they then enter a line feature class, you set the default value to ORANGE as long as the keyword parameter is unaltered.
                              However, if the keyword parameter has been altered by the user (that is, the keyword is set to GREEN), you should not reset the keyword—the user has made their choice (GREEN) and you don't know their intention—they may change the feature class so that GREEN is valid or they change may change keyword (to PURPLE, for example). Since GREEN isn't a member of the set of keywords you created for lines, internal validate flags the parameter an error. The user has two options at this point—change the input feature class or change the keyword.

                              HasBeenValidated


                              HasBeenValidated is false if a parameter's value has been modified by the user since the last time updateParameters and internal validate was called. Once internal validate has been called, geoprocessing automatically sets HasBeenValidated to true for every parameter.
                              HasBeenValidated is used to determine if the user has changed a value since the last call to updateParameters(). You can use this information in deciding whether to do your own checking of the parameter.

                              Categoria


                              You can put parameters in different categories to minimize the size of the tool dialog. The Network Analyst tools use categories, as shown below.

                              Since you can only set the category once, set it in initializeParameters(). Setting categories in updateParameters() has no effect. The code below shows putting parameters 4 and 5 into the Options category and parameters 6 and 7 into the Advanced category.

                              Categories are always shown after noncategorized parameters. Do not put required parameters into categories since the user may not see them.

                              Simbologia


                              The symbology property associates a layer file (.lyr) with an output parameter.

                              Every output parameter of type feature class, table, raster, or workspace has a schema object. Only output feature classes, tables, rasters, and workspaces have a schema—other types do not. The schema object is created for you by geoprocessing. You access this schema through the parameter object and set the rules for describing the output of your tool. After you set the schema rules, and on return from the ToolValidator class, the geoprocessing internal validation code examines the rules you set and updates the description of the output.

                              1. When the tool dialog is first opened, initializeParameters() is called. You set up the static rules (rules that don't change based on user input) for describing the output. No output description is created at this time since the user hasn't specified values for any of the parameters (unless you've provided default values).
                              2. Once the user interacts with the tool dialog in any way, updateParameters() is called.
                              3. updateParameters() can modify the schema object to account for dynamic behavior that can't be determined from the parameter dependencies (such as adding a new field like Add Field).
                              4. After returning from updateParameters(), the internal validation routines are called and the rules found in the schema object are applied to update the description of the output data.
                              5. updateMessages() is then called. You can examine the warning and error messages that internal validation may have created and modify them or add your own custom warning and error messages.

                              Property name Value(s)
                              Type String: Feature, Table, Raster , Container (for workspaces and feature datasets). (Read-only property.)
                              Clone boleano
                              FeatureTypeRule String: AsSpecified, FirstDependency
                              FeatureType String: Simple, Annotation, Dimension
                              GeometryTypeRule String: Unknown, FirstDependency, Min, Max, AsSpecified
                              GeometryType String: Point, Multipoint, Polyline, Polygon
                              ExtentRule String: AsSpecified, FirstDependency, Intersection, Union, Environment
                              Extent Extent object
                              FieldsRule String: None, FirstDependency, FirstDependencyFIDsOnly, All, AllNoFIDs, AllFIDsOnly
                              AdditionalFields Python list of field objects
                              CellSizeRule String: AsSpecified, FirstDependency, Min, Max, Environment
                              Cellsize Duplo
                              RasterRule String: FirstDependency, Min, Max, Integer, Float
                              RasterFormatRule String: Img, Grid
                              AdditionalChildren Python list of datasets to add to a workspace schema.

                              Using FirstDependency

                              Several of the rules can be set to FirstDependency, which means to use the value of the first parameter found in parameter dependency array set with parameter.ParameterDependencies. In the code example below, parameter 2 has two dependent parameters, 0 and 1, and the first dependency is parameter 0.

                              If any dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.

                              Case insensitive

                              Schema object rules and methods take case-insensitive text strings. For example, "AsSpecified" and "asspecified" are equivalent.

                              The Type property is read-only and is set by geoprocessing.

                              Clone

                              • If parameter.ParameterType is Derived, an exact copy is made. This is the behavior of the Add Field tool.
                              • If parameter.ParameterType is Required, an exact copy is also made, but the catalog path to the dataset is changed. Catalog paths consist of two parts: the workspace and the base name. Por exemplo

                              Workspace =E:DataTestData etcity.gdbinfrastructure and Base name = roads


                              • The base name is the same as the base name of the first input parameter containing a dataset ( not the first dependency but the first parameter) appended with the name of the script tool (for example, roads_MyTool).
                              • The workspace is set to the scratch workspace environment setting. If this is empty, the current workspace environment setting is used. If this is empty, the workspace of the first input parameter containing a dataset is used. If this workspace is read-only, then the system temp directory is used.

                              After setting Clone to true, all rule-based methods, such as FeatureTypeRule, GeometryTypeRule, and ExtentRule, are set to FirstDependency.

                              The two code examples below do the equivalent work. Both examples are based on how the Clip tool creates the output schema.
                              Example 1: Explicitly setting all rules


                              Example 2: Using Clone to set rules to FirstDependency, then overriding the extent rule

                              FeatureTypeRule

                              This setting determines the feature type of the output feature class. This rule has no affect on output rasters or tables.

                              Valor Descrição
                              AsSpecified The feature type will be determined by the FeatureType property.
                              FirstDependency The feature type will be the same as the first parameter in the dependencies. If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.

                              FeatureType

                              When the FeatureTypeRule is AsSpecified, the value in FeatureType is used to specify the feature type of the output.

                              Valor Descrição
                              Simple The output will contain simple features. The geometry type of the features is specified with GeometryTypeRul.
                              Annotation The output will contain annotation features.
                              Dimension The output will contain dimension features.

                              GeometryTypeRule

                              This setting determines the geometry type (such as point or polygon) of the output feature class.

                              Valor Descrição
                              Desconhecido This is the default setting. Typically, you should be able to determine the geometry type in updateParameters() based on the values of other parameters. You'd only set the rule to Unknown if you don't have enough information to determine the geometry type, such as in initializeParameters().
                              FirstDependency The geometry type is the same as the first dependent parameter. If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.
                              Min, Max Examines the geometries of all dependent parameters and sets the output geometry type to the minimum or maximum type found. Min and Max are defined as follows:

                              So, if the dependent parameters were a point and polygon feature class, the minimum would be point and the maximum would be polygon.

                              AsSpecified The geometry type will be determined by the value of the GeometryType property.

                              GeometryType

                              Set this to the geometry type to use (either Point, Multipoint, Polyline, or Polygon) when GeometryTypeRule is AsSpecified.

                              ExtentRule

                              Valor Descrição
                              AsSpecified The output extent will be specified in the Extent property.
                              FirstDependency The output extent is the same as the first dependent parameter. If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.
                              Intersection The output extent will be the geometric intersection of all dependent parameters. (This is what the Clip tool uses, as shown below.)
                              Union The output extent will be the geometric union of all dependent parameters.
                              Environment The output extent will be calculated based on the output extent environment setting.

                              Exemplo

                              Extent

                              Set this to the extent to use when ExtentRule is AsSpecified. You can either set the extent with a space-delimited string or a Python list object with four values. The sequence is xmin, ymin, xmax, ymax.
                              Exemplo

                              FieldsRule

                              FieldsRule determines what fields will exist on the output feature class or table.

                              In the table below, FID stands for Feature ID, but actually refers to the ObjectID field found on every feature class or table.

                              Valor Descrição
                              None No fields will be output except for the object ID.
                              FirstDependency Output fields will be the same as the first dependent parameter. If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.
                              FirstDependencyFIDsOnly Only the ObjectID of the first dependent input will be written to the output.
                              All All fields in the list of dependent parameters will be output.
                              "llNoFIDs All fields except for the ObjectIDs will be written to the output.
                              "llFIDsOnly All ObjectID fields are written to the output, but no other fields from the inputs will be written.

                              Example of Clip using FieldsRule of FirstDependency

                              AdditionalFields

                              Besides the fields that are added by the application of the FieldsRule, you can add additional fields to the output. AdditionalFields takes a Python list of field objects.

                              CellSizeRule

                              This determines the cellsize of output rasters or grids.

                              Valor Descrição
                              AsSpecified The output cellsize is specified in the CellSize property.
                              FirstDependency The cell size is calculated from the first dependent parameter. If the dependent parameter is a raster, then its cell size is used. For other types of dependent parameters, such as feature classes or feature datasets, the extent of the data is used to calculate a cell size.
                              If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.
                              Min, Max Min means the output cell size is the smallest cell size of the dependent parameters. Max means it is the largest cell size of the dependent parameters.
                              "Environment" The output cel lsize is calculated based on the cell size environment setting.

                              CellSize

                              Set this to the cell size to use when CellSizeRule is AsSpecified.

                              RasterRule

                              This determines the data type—integer or float—contained in the output raster.

                              Valor Descrição
                              FirstDependency The data type (integer or float) is the same as the first dependent parameter. If the first dependent parameter is a multivalue (a list of values), the first value in the multivalue list is used.
                              Min, Max Integer is considered smaller than float. For example, if there are two dependent parameters, one containing integers and the other containing floats, Min creates an integer output and Max creates a float output.
                              Integer The output raster contains integers (whole numbers).
                              Float The output raster contains floats (fractional numbers).

                              RasterFormatRule

                              This determines the output raster format, either Grid or Img. The default is Img, which is ERDAS IMAGINE format. Grid is ESRI's format.

                              AdditionalChildren

                              A workspace is a container for datasets (features, tables, and rasters). These datasets are children of the workspace (think of the workspace as the parent). If your tool adds datasets to a new or existing workspace, you can update the description of the workspace by adding descriptions of the children. For example, you may have a tool that takes a list of feature classes (a multivalue), modifies them in some way, then writes the modified feature classes to an existing workspace. When the tool is used in ModelBuilder, the workspace is the derived output of the tool, and you may want to use this workspace as input to the Select Data tool. Select Data allows you to select a child dataset found in a container and use it as input to another tool.
                              The input to AdditionalChildren is one or more descriptions of the children. There are two forms of child descriptions:

                              Form Descrição
                              Geoprocessing value object A feature class, table, raster, dimension, or annotation value, as returned by the Value method for example

                              Python list object of the form [type, name, fields, extent, spatial reference ] A Python list containing a description of the child to be added. Only the first two entries in the list, type and name, are required. The remaining arguments are optional.

                              When adding more than one child, you provide a list of child descriptions. If you're adding the children using the Python list object form, you'll create a list of lists for AdditionalChildren.
                              View examples of using Python lists and list of lists

                              The Python list form has five arguments, as described in the following table.

                              Following are some examples of setting a workspace schema. The examples are based on a script tool that has the following arguments:


                              Parameter name Propriedades
                              0 Input feature class Feature class—Input
                              1 Input table Table—Input
                              2 Input workspace Workspace—Input (an existing workspace that contains the results of the tool).
                              3 Derived workspace Workspace—Derived output, obtained from Input_workspace. The schema of this workspace is modified to contain additional children.

                              The tool takes the input feature class and table, copies both to the workspace, adds a new field to the feature class, then creates a new polygon feature class in the workspace. (The actual work of the tool isn't important as it only serves to illustrate setting a workspace schema.) The code examples below build on one another, starting with simple usage of AdditionalChildren. If you choose to implement and test some of the code examples below, you can test the code using the model illustrated below.

                              In initializeParameters(), the output workspace is cloned from its dependent parameter (parameter 2). This dependency is set in the tool properties but can also be set in initializeParameters() to guard against someone removing the dependency in the tool's properties.

                              Example : Copy the two inputs (no modifications) to the output workspace:


                              Example : The tool creates a new polygon feature class. The only properties known about this new feature class (when validating) are the name (SummaryPolygon) and type (polygon).

                              Example : Add a field to the input feature class.

                              To create fields for SummaryPolygon (the new polygon feature class), create a list of field objects similar to the pattern shown in the above example.

                              Example : Multivalue input.
                              In this example, the first parameter is a mulitvalue of feature classes. Each feature class in the multivalue is copied to the derived workspace. A new field, ProjectID, is added to each of the copied feature classes.

                              • A filter only presents the user with valid choices when browsing for data. If you set your filter for point feature classes, only point feature classes are shown when the user browses for data. If you set your filter for text fields, the drop-down list of fields only shows text fields.
                              • If a user types in a parameter value (rather than picking a value from the list or file browser), the value is checked against the filter. If the user enters an invalid value (a numeric field instead of a text field, for example), a warning or error is automatically given.
                              • Because values are checked against their filter by internal validation, a filter frees you from having to program your own custom validation in the Toolvalidator class.

                              There are two ways to specify filters.

                              • On the Parameters tab of the tool's properties dialog, click the parameter, then click the cell next to Filter and choose the filter type from the drop-down list. After choosing the filter type, a dialog box opens where you specify the values for the filter.

                              • You can set the values programmatically in ToolValidator (examples are given below). Geoprocessing creates filters automatically for parameters of type string, long, double, feature class, file, field, and workspace. Even if you don't choose a filter on the tool's properties dialog, there is still a filter associated with the parameter—it's just empty. An empty filter is the same as having no filter. By adding values to an empty filter, you activate the filter and the user's choices are limited by the contents of the filter.

                              There are six kinds of filters, as shown in the table below.

                              Filter type Values
                              ValueList A list of string or numeric values. Used with String, Long, Double, and Boolean data types.
                              Range A minimum and maximum value. Used with Long and Double data types.
                              FeatureClass A list of allowable feature class types, specified with the values Point, Multipoint, Polyline, Polygon, MultiPatch, Sphere, Annotation, Dimension. More than one value can be supplied to the filter.
                              Arquivo A list of file suffixes. Example txt, e00, ditamap.
                              Campo A list of allowable field types, specified by the values Short, Long, Single, Double, Text, Date, OID, Geometry, Blob, Raster, GUID, GlobalID, XML. More than one value can be supplied to the filter.
                              Workspace A list of allowable workspace types, specified by the values FileSystem, LocalDatabase, and RemoteDatabase. More than one value can be supplied.

                              Propriedades

                              Property Descrição
                              Type The type of filter (ValueList, Range, FeatureClass, File, Field, and Workspace). You can set the type of filter when dealing with Long and Double parameters (see note below). For other types of parameters, there is only one valid type of filter, so setting the type on these parameters is ignored. If you do not want to filter values, set the List property to an empty list.
                              List A Python list of values for the filter. If you do not want to filter values, set the List property to an empty list.

                              ValueList

                              ValueList for String parameters
                              For a string parameter, the list can contain any number of strings. Below is an example of setting the list of string values in initializeParameters. The parameter contains two choices, NEW_FORMAT and OLD_FORMAT.

                              In the above example, you could have just as easily set the list of values in the Parameter tab of the tool's properties dialog. In fact, if you had set the list of values to something else (like OLD and NEW) in the tool's properties, these values would be replaced by OLD_FORMAT and NEW_FORMAT when initializeParameters() is called. The same is true for the default value—it can be set in the tool's properties dialog and then reset in ToolValidator.

                              NOTE: The list of values you provide in ToolValidator always replaces the values set in the tool's properties dialog. This behavior allows you to update the values based on other parameters.

                              Continuing with this example, the code below shows updateParameters() changing a list of values in another parameter based on whether the user chose OLD_FORMAT or NEW_FORMAT:

                              ValueList for Long and Double parameters
                              A Long or Double parameter can have a list of numeric values. The user can only choose or enter values that are in the list.

                              ValueList for Boolean parameters
                              There are two values for a Boolean parameter: the true value and false value. The true value is always the first value in the list.

                              Range

                              A Long or Double parameter can have a Range filter. Range filters have two values, the minimum and maximum. The first value in the list is the minimum. The range is inclusive, meaning the minimum and maximum are valid choices.

                              Setting filter type on long and double parameters

                              For Long and Double parameters, the default filter type is ValueList. If you want it to be a Range filter, set the filter type in initializeParameters(), as follows:

                              You can only set the filter type for Long and Double parameters.

                              FeatureClass

                              The example below shows setting the feature type of one input parameter based on the feature type of another input parameter.

                              The file filter contains a list of file suffixes that a file can have, such as txt (simple text file) and csv (comma separated value). You can supply any text for a suffix—it doesn't have to be a suffix that ArcGIS recognizes. The suffix can be of any length and does not include the dot. The example below shows setting the filter for an input File parameter.

                              Campo

                              The field filter defines the permissible field types. Values can be Short, Long, Single, Double, Text, Date, OID, Geometry, Blob, Raster, GUID, GlobalID, XML.

                              Display versus Internal name
                              There are four field types that have an internal name, shown in the table below.

                              Display name Internal name
                              Short SmallInteger
                              Long Integer
                              Float Single
                              Text String

                              When specifying a field filter, you can use either the display or internal name. That is, the following two lines of code are equivalent:

                              If you supply the display name, such as "short", it is converted and stored in the filter as "SmallInteger." You should rarely need to access values in the field filter, but if you do, be aware that the internal name is stored. The code snippet below shows how to account for this:

                              Setting a default field value

                              You may want to provide a default value for a field parameter. The way you do this is to loop through the fields on the input table and pick the first field that satisfies the filter, as follows:

                              NOTE: Do not use the geoprocessing ListFields method in ToolValidator. Instead, use the Describe method as shown above.

                              Workspace

                              The workspace filter specifies the types of input workspaces that are permissible. There are three values:


                                FileSystem
                                A system folder used to store shapefiles, ArcInfo coverages, INFO tables, and grids


                              GeoSPARQL support¶

                              GeoSPARQL is a standard for representing and querying geospatial linked data for the Semantic Web from the Open Geospatial Consortium (OGC). The standard provides:

                              a small topological ontology in RDFS/OWL for representation using Geography Markup Language (GML) and Well-Known Text (WKT) literals

                              Simple Features, RCC8, and Egenhofer topological relationship vocabularies and ontologies for qualitative reasoning

                              A SPARQL query interface using a set of topological SPARQL extension functions for quantitative reasoning.

                              The GraphDB GeoSPARQL plugin allows the conversion of Well-Known Text from different coordinate reference systems (CRS) into the CRS84 format, which is the default CRS according to the Open Geospatial Consortium (OGC). You can input data of all known CRS types - it will be properly indexed by the plugin, and you will also be able to query it in both the default CRS84 format and in the format in which it was imported.

                              The following is a simplified diagram of the GeoSPARQL classes Feature and Geometry, as well as some of their properties:


                              Assista o vídeo: 2 MapInfo Pro- Creation of Polygon