Puede ser importante obtener la dimensión fractal de un objeto geográfico. Por ejemplo, la dimensión fractal de un contorno urbano se relaciona con la dispersión urbana, y la dispersión a su vez se relaciona con el precio de suelo, la corrupción del gobierno local, el tiempo promedio de desplazamiento en la ciudad, etc.
No abundaremos en lo que es un fractal, pero recordemos que uno de los métodos para estimar la dimensión fractal es el de conteo de cajas. Esto es, para un objeto dado, trazamos distintas rejillas de distintas dimensiones. Con cajas grandes el objeto quedará incluido con pocas cajas y con cajas pequeñas con muchas. La ilustración resume el asunto:
En términos generales, la dimensión fractal será la pendiente de la recta que resulte de relacional el logaritmo del tamaño del lado de cada grid con el logaritmo del número de cuadros que ocupa el grid.
Aquí lo que es importante es como generar dichos grids. Para una tabla en MapInfo de poligonos que pueden ser ciduades o otra característica, se tiene el siguiente programa, donde CiudadesMasDe100MilHabs es una capa que contiene contornos de ciduades y MapaDeCuadrados un layer vacio donde se depositarán los grids. Nivel es el número de cuadrados de los grids. Este se puede ir cambiando o bien automatizar dicho cambio.
Dim MaximaCaja As Object
Dim X1,X2,Y1,Y2,LadoMaximo As Float
Dim CuadradoDibujado As OBject
Dim LadoMayor As Float
Dim Columna, Renglon As Integer
Dim Q As Integer
Dim Lag As Float
Dim Nivel As Integer
Select Obj From CiudadesMasDe100MilHabs Where RowId=1
For Q=1 to 79
Select Obj From CiudadesMasDe100MilHabs Where RowId=Q
Nivel=4
MaximaCaja=MBR(Selection.Obj)
X1=ObjectGeography(MaximaCaja,1)
Y1=ObjectGeography(MaximaCaja,2)
X2=ObjectGeography(MaximaCaja,3)
Y2=ObjectGeography(MaximaCaja,4)
LadoMayor=Maximum(Abs(X2-X1),Abs(Y2-Y1))
Lag=LadoMayor/Nivel
X2=X1+Lag
Y2=Y1+lag
For Columna=0 To Nivel
For Renglon=0 To Nivel
Create Region Into Variable CuadradoDibujado 0
Alter Object CuadradoDibujado Node Add ((X1+Renglon*Lag),(Y1+Columna*Lag))
Alter Object CuadradoDibujado Node Add ((X1+Renglon*Lag),(Y2+Columna*Lag))
Alter Object CuadradoDibujado Node Add ((X2+Renglon*Lag),(Y2+Columna*Lag))
Alter Object CuadradoDibujado Node Add ((X2+Renglon*Lag),(Y1+Columna*Lag))
Insert Into MapaDeCuadros (Obj) Values (CuadradoDibujado)
Next
Next
Next
No hay comentarios:
Publicar un comentario