12.05.2013 Views

Fundamentos de análisis geográfico con SEXTANTE - La Salle

Fundamentos de análisis geográfico con SEXTANTE - La Salle

Fundamentos de análisis geográfico con SEXTANTE - La Salle

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

20.3. MANEJANDO CAPAS RASTER. LA CLASE CGRID 331<br />

<strong>de</strong> la ventana <strong>de</strong> parámetros. <strong>La</strong>s clases correspondientes son extensas y no tiene sentido<br />

abarcarlas en su totalidad en este capítulo, pero aún así veremos algunas <strong>de</strong> las características<br />

más básicas. Para las restantes, pue<strong>de</strong>s <strong>con</strong>sultar el código fuente <strong>de</strong> otros módulos, o bien las<br />

<strong>de</strong>finiciones <strong>de</strong> las clases más importantes, tales como CGrid, CShapes, CTable o CModule.<br />

Comencemos <strong>con</strong> el trabajo <strong>con</strong> capas raster.<br />

20.3. Manejando capas raster. <strong>La</strong> clase CGrid<br />

<strong>La</strong> parte <strong>de</strong>l código <strong>de</strong>l módulo <strong>de</strong> ejemplo en la que se procesa la información tiene el<br />

siguiente aspecto:<br />

for(y=0; yasDouble(x,y));<br />

}<br />

}<br />

Los métodos Get NX() y Get NY() <strong>de</strong>vuelven el numero <strong>de</strong> columnas y filas <strong>de</strong>l grid respectivamente,<br />

y son métodos <strong>de</strong> la clase CGrid, aunque como ves en el ejemplo anterior, también<br />

son miembros <strong>de</strong> CModule Grid y pue<strong>de</strong>n llamarse sin necesidad <strong>de</strong> hacer referencia a ningún<br />

grid. Eso se <strong>de</strong>be a que el módulo ✭✭sabe✮✮ la extensión <strong>de</strong> grid seleccionada y sus características.<br />

<strong>La</strong> línea <strong>de</strong> proceso principal simplemente toma un dato <strong>de</strong>l grid <strong>de</strong> entrada y asigna dicho<br />

valor multiplicado por la <strong>con</strong>stante d al grid <strong>de</strong> salida, haciendo esto para cada celda. Para<br />

una celda (x,y) (el origen (0,0) es la esquina inferior izquierda) se pue<strong>de</strong> <strong>con</strong>ocer el valor<br />

en un grid <strong>con</strong> alguna <strong>de</strong> las siguientes funciones, <strong>de</strong>pendiendo <strong>de</strong>l tipo <strong>de</strong> dato que se <strong>de</strong>see<br />

recuperar.<br />

virtual BYTE asByte (int x, int y, bool bZFactor = false)<br />

virtual char asChar (int x, int y, bool bZFactor = false)<br />

virtual short asShort (int x, int y, bool bZFactor = false)<br />

virtual int asInt (int x, int y, bool bZFactor = false)<br />

virtual long asLong (int x, int y, bool bZFactor = false)<br />

virtual float asFloat (int x, int y, bool bZFactor = false)<br />

virtual double asDouble (int x, int y, bool bZFactor = false)<br />

El parámetro bZFactor indica si se <strong>de</strong>sea que el valor <strong>de</strong>vuelto incluya la aplicación <strong>de</strong>l<br />

factor Z <strong>de</strong>l grid.<br />

Para asignar un valor a una celda, usa la función<br />

virtual void Set_Value(int x, int y, double Value)<br />

En relación <strong>con</strong> los valores <strong>de</strong> sin datos, pue<strong>de</strong>s modificar éstos estableciendo un nuevo<br />

valor único o bien un rango, <strong>con</strong> los métodos<br />

void Set_NoData_Value (double Value);<br />

void Set_NoData_Value_Range (double loValue, double hiValue);<br />

Pue<strong>de</strong>s <strong>con</strong>ocer el valor <strong>de</strong> sin datos <strong>con</strong> algunas funciones <strong>de</strong> la clase, pero para asignar<br />

este valor a una celda no necesitas, sin embargo, saberlo. Utiliza el método<br />

virtual void Set_NoData (int x, int y)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!