Eu tenho um conjunto de pontos como um arquivo de forma e quero encontrar (as coordenadas) de um novo ponto que tenha a maior distância possível de cada um dos pontos existentes. Isso é possível? Se sim, existe algum código VB de amostra? Obrigado Demetris
arcgis-10.0
arcobjects
vba
vb.net
Demetris
fonte
fonte
Respostas:
A recomendação de Kirk Kuykendall de construir um diagrama esférico de Voronoi (polígonos de Thiessen) é boa, mas pode ter alguns problemas técnicos para resolver. Enquanto isso, como alternativa, é possível aplicar a solução rasterizada padrão, conforme descrito em outro segmento . Use distâncias esféricas em vez de distâncias euclidianas.
Aqui está um exemplo usando cinco pontos, dados aqui como (lat, lon):
Este mapa de distância esférica abrange o globo de -180 a 180 graus de longitude horizontalmente e de -90 a 90 graus de latitude verticalmente. Os pontos são mostrados com grandes pontos vermelhos. As distâncias aumentam com o brilho. Os cumes aparentes devem ser partes de grandes círculos. O pequeno ponto preto próximo a (-15,3268, -2,04352) marca o ponto de distância máxima de 11.227 km. (As distâncias foram calculadas no dado elipsoidal ITRF00.)
A resolução dessa grade é de um grau. Para obter uma solução mais precisa, é possível ampliar esse ponto (e qualquer outro máximo local com um valor suficientemente próximo do máximo global) e repetir o cálculo em uma grade menor, mas com maior resolução.
fonte
Eu nunca tentei isso, mas parece que isso iria funcionar:
Crie um diagrama voronoi 3D da esfera. Os polígonos resultantes serão centralizados aproximadamente nos pontos originais (semente) existentes.
Passe por cada vértice resultante para encontrar o que está mais distante do seu ponto existente mais próximo. Este ponto deve ser o ponto mais remoto do globo.
fonte
Você pode usar uma função de distância ponderada para identificar a que distância cada célula da sua varredura está de todos os outros pontos.
fonte
Até onde eu sei, essa análise do " pólo de inacessibilidade " deve ser feita iterativamente.
Uma abordagem de varredura iterativa seria apropriada desde que você esteja vendo uma área pequena com mínima distorção da projeção. Para cada célula, calcule a distância de todos os pontos e depois a distância mínima. A célula com o valor mais alto é o polo. Você também pode usar a Distância euclidiana no analista espacial para fazer isso.
Uma abordagem de vetor iterativo é mais complicada. Garcia-Castellanos et al. 2007 descrevem um método iterativo baseado em uma terra esférica. Parece que eles disponibilizaram o código C online . Eu posso imaginar maneiras de fazer isso no Arc com buffers, mas ainda seria iterativo e lento.
fonte
você pode usar a distância do ponto (análise) A ferramenta cria uma tabela com distâncias entre dois conjuntos de pontos. se o raio de pesquisa padrão for usado, as distâncias de todos os pontos de entrada até todos os pontos próximos serão calculadas. A tabela de saída pode ser bastante grande. Por exemplo, se os recursos de entrada e próximo tiverem 1.000 pontos cada, a tabela de saída poderá conter um milhão de registros.
fonte
O ponto mais distante do seu conjunto de pontos seria o recíproco ao ponto mais interno do seu conjunto. Por exemplo, se o seu ponto mais interno do seu conjunto tivesse coordenadas 49 graus norte e -144 graus leste, o ponto recíproco e o extremo mais distante teriam coordenadas 49 graus sul e 36 graus oeste. Isso não é exatamente verdade porque a Terra não é perfeitamente esférica, e sim geoidal; portanto, a correção do ponto de resultado depende muito de quais sistemas de projeção e geográficos (ortográficos, ortorretificados ...) você usa. Pode ser útil encontrar um recíproco para todo o conjunto (transferir um antípoda para um conjunto) e, em seguida, executar a análise da superfície dentro do terreno coberto pelo conjunto de pontos antípoda, já que o terreno pode muito. Suponho que sua pergunta não se refira a pontos em corpos extraterrestres, como outros planetas ou luas. Desculpe, Eu não tenho código VB para você. 🙄
fonte