Mam zestaw punktów jako plik kształtu i chcę znaleźć (współrzędne) nowego punktu, który będzie miał możliwie największą odległość od każdego z istniejących punktów. Czy to jest możliwe? Jeśli tak, czy jest jakiś przykładowy kod VB? Dzięki Demetris
arcgis-10.0
arcobjects
vba
vb.net
Demetris
źródło
źródło
Odpowiedzi:
Zalecenie Kirka Kuykendalla dotyczące skonstruowania sferycznego diagramu Voronoi (wielokąty Thiessena) jest dobre, ale może wymagać pewnych technicznych problemów. W międzyczasie można alternatywnie zastosować standardowe rozwiązanie rastrowe, jak opisano w innym wątku . Użyj odległości sferycznych zamiast odległości euklidesowych.
Oto przykład wykorzystujący pięć punktów, podany jako (lat, lon):
Ta sferyczna mapa odległości obejmuje glob od -180 do 180 stopni długości w poziomie i od -90 do 90 stopni w pionie. Punkty są pokazane dużymi czerwonymi kropkami. Odległości rosną wraz z jasnością. Widoczne grzbiety muszą być fragmentami wielkich kręgów. Mała czarna kropka w pobliżu (-15,268, -2,04352) oznacza punkt maksymalnej odległości 11 227 km. (Odległości obliczono w elipsoidalnym układzie odniesienia ITRF00).
Rozdzielczość tej siatki wynosi jeden stopień. Aby uzyskać bardziej precyzyjne rozwiązanie, można powiększyć taki punkt (i dowolne inne maksimum lokalne o wystarczająco zbliżonej wartości do maksimum globalnego) i powtórzyć obliczenia na siatce o mniejszej, ale wyższej rozdzielczości.
źródło
Nigdy tego nie próbowałem, ale wygląda na to, że to zadziała:
Stwórz trójwymiarowy schemat kuli. Powstałe wielokąty zostaną z grubsza wyśrodkowane na oryginalnych istniejących punktach (nasionach).
Pętlę przez każdy wynikowy wierzchołek, aby znaleźć ten, który jest najdalej od najbliższego istniejącego punktu. Ten punkt powinien być najbardziej odległym punktem na świecie.
źródło
Możesz użyć funkcji odległości ważonej kosztem, aby określić, jak daleko jest każda komórka w twoim rastrze od wszystkich innych punktów.
źródło
O ile mi wiadomo, tę analizę „ Polaka niedostępności ” należy wykonać iteracyjnie.
Iteracyjne podejście rastrowe byłoby odpowiednie, jeśli patrzysz na mały obszar z minimalnymi zniekształceniami wynikającymi z projekcji. Dla każdej komórki obliczyć odległość do wszystkich punktów, a następnie przyjąć minimalną odległość. Komórka o najwyższej wartości jest biegunem. Aby to zrobić, możesz również użyć odległości euklidesowej w programie Analityka przestrzennego.
Iteracyjne podejście wektorowe jest bardziej skomplikowane. Garcia-Castellanos i in. 2007 opisują metodę iteracyjną opartą na kulistej ziemi. Wygląda na to, że udostępnili swój kod C online . Mogę sobie wyobrazić, jak to zrobić w Arc za pomocą buforów, ale nadal byłoby to iteracyjne i powolne.
źródło
możesz użyć Odległość punktu (Analiza) Narzędzie tworzy tabelę z odległościami między dwoma zestawami punktów. jeśli używany jest domyślny promień wyszukiwania, obliczane są odległości od wszystkich punktów wejściowych do wszystkich punktów w pobliżu. Tabela wyjściowa może być dość duża. Na przykład, jeśli obie funkcje wejściowe i bliskie mają 1000 punktów każda, wówczas tabela wyjściowa może zawierać milion rekordów.
źródło
Najdalszy punkt w twoim zestawie punktów byłby odwrotny do najbardziej wewnętrznego punktu w twoim zestawie. Na przykład, jeśli twój najbardziej wewnętrzny punkt w twoim zestawie miał współrzędne 49 stopni na północ i -144 stopni na wschód, wtedy punkt odwrotny i najdalszy miałby współrzędne 49 stopni na południe i 36 stopni na zachód. Nie jest to do końca prawdą, ponieważ Ziemia nie jest idealnie kulista, a raczej geoidalna; dlatego poprawność punktu wynikowego zależy w dużej mierze od tego, jakiego systemu rzutowania i geograficznego (ortograficznego, ortorektalizowanego ...) używasz. Pomocne może być znalezienie odwrotności dla całego zestawu (przesłanie antypodu dla zestawu), a następnie przeprowadzenie analizy powierzchni w terenie objętym zestawem punktów antypodu, ponieważ teren może być bardzo duży. Zakładam, że twoje pytanie nie dotyczy żadnych punktów na ciałach pozaziemskich, takich jak inne planety lub księżyce. Przepraszam, Nie mam dla ciebie kodu VB. 🙄
źródło