8 votos

¿Cómo puedo clúster XY punto de datos? (ArcGIS 9.3)

Tengo un montón de iconos mostrar en un mapa, quiero que estos agrupados juntos como fue sugerido a mí por una cuestión diferente aquí... ArcGIS 9.3. ¿Cómo puedo aumentar la Imagen Símbolo de Marcador de rendimiento?

Un enlace a un ejemplo de ello fue previsto, pero no estoy muy seguro de por dónde empezar. Voy a escribir el prólogo de esta diciendo que yo soy un programador forma antes de que yo soy un sig persona.

Lo que quiero saber, en total noob términos, es ¿cómo puedo clúster de mis iconos para eventos XY en el mapa?

Gracias!

EDIT: Olvidé mencionar, que este es un C# ADF web del portal SIG... Si hace alguna diferencia.

Esto es incluso posible? Me parece que no puede encontrar nada para hacer esto, con 9,3 adf.

5voto

cjstehno Puntos 131

Una manera simple es complemento de los acontecimientos a una cuadrícula. Es lo suficientemente rápido que, potencialmente, se puede hacer de forma dinámica.

Usted puede ajustar los puntos por medio de unos sencillos cálculos antes de la creación de los eventos. Decidir sobre la rejilla del origen y el tamaño de la malla, utilizando el mismo sistema de coordenadas como (X, Y) los valores que tiene. Deje que el origen de coordenadas (Ox, Oy) y supongamos que su malla es c (la distancia entre vecinos de puntos a lo largo de la cuadrícula básica de direcciones). Grandes valores de c va a crear grandes grupos, en el costo de mudarse algunos puntos a distancias de hasta c*Sqrt(1/2)). Aprovechar la flexibilidad de elegir c por encontrar un valor que lleva a cabo el compromiso que desee entre exactitud de posición en el mapa y la sencillez.

Calcular

I = {(X - Ox)/c}

J = {(Y - Oy)/c}

A continuación, calcular

U = I * c + Ox

V = J * c + Oy.

Las llaves "{}" significa "redondear al número entero más cercano." (Usted podría hacer estos cálculos en dos pasos, en lugar de cuatro, pero veremos a continuación que I y J tienen usos adicionales.)

Después de completar el cálculo, designar (U, V), como el caso de las coordenadas en lugar de (X, Y). Que se ocupa de la agrupación.

Además desea desterrar los registros de modo que existe un único marcador de punto para cada valor único de (U, V). Lograr esto mediante el resumen en (U, V), y basando el punto de hechos de ese resumen. Recuerdo que de ArcGIS se limita a los resúmenes en un solo campo. Usted puede crear un campo correspondiente a (U, V) para este propósito, con un cálculo como

Id = I + 10000*J

El valor de 10000 sólo tiene que ser mayor que el número total de (invisible) filas cubriendo sus datos en la red.

4voto

Joey deVilla Puntos 4487

Desde que vi tu pregunta de ayer, yo estaba en busca de un viejo bloc de notas con un flujo de trabajo he utilizado para realizar este agrupamiento. Era bastante estática de la capa, por lo que no tuve necesidad de realizar sobre la marcha, pero no veo por qué no pudo envolver el flujo de trabajo en un modelo generador de proceso y utilizarlo como un servicio de geoprocesamiento. Se basa en la salida de la caja de herramientas del Arco caja de herramientas:

  • En la Gestión de Datos, Característica de la Clase, el uso de Integrar en su capa de punto. Con un umbral adecuado, se mueve de puntos lo suficientemente cerca como para el mismo lugar, sin la agrupación;
  • En Estadística Espacial, Utilidades, uso Recoger los Eventos en el punto resultante de la capa de clúster de puntos en la misma posición y el número de ellos;
  • Si es necesario, en el Análisis, ejecutar una unión Espacial entre la salida y la entrada de Recoger los Eventos a realizar el cálculo de los atributos;
  • Si es necesario, limpie los resultados, dejando de campos innecesarios.

Si alguien tiene un limpiador de solución, más simple, yo estaría interesado. Este es el que he usado y que trabajó para mí.

3voto

Slayd Puntos 111

Puesto que usted es un programador, no de la mente psuedocode...

Primero: yo no soy un gran fan de la agrupación en clústeres de datos sin una buena razón. Se oculta información. Mejor usar un rápido empate / iconos más pequeños si se puede. :)

K-means clustering es realmente simple de implementar a ti mismo:

create k cluster centers by picking k random points from your collection of points.
while not done:
   assign each point to the closest cluster center
   update the cluster centers to be the average of all points in that cluster
   done = true if no points changed cluster.

(Hay más rápido algoritmos, pero son más complicadas. Y las posibilidades son que esto es lo suficientemente rápido!)

2voto

Neall Puntos 261

Que mencionar que esto es para un C# WebADF de la aplicación - No se ve una manera de hacer esto, y imagino que sería bastante complicado.

Sin embargo, la WebADF está obsoleto, por lo que tal vez pensar acerca de la migración de su aplicación a uno de los ESRI Api. :)

Mansour (ESRI Flex Gurú) blog, tiene un excelente post sobre cómo hacer esto con el ESRI Flex de la API, incluyendo un enlace al código fuente.

Él también se refiere a cómo esto se puede hacer con Google Maps, utilizando Maptimize.

También tiene varios otros posts sobre cómo esto se puede lograr con algunos de ActionScript/ESRI Flex de la API.

1voto

Lars Truijens Puntos 24005

Echa un vistazo a este plugin puede ayudar a usted (R Punto de la Agrupación).

http://arcscripts.esri.com/details.asp?dbid=16444

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X