TFM GarciaTenderoJP Desarrollo
TFM GarciaTenderoJP Desarrollo
TFM GarciaTenderoJP Desarrollo
Deseo mostrar mi gratitud a D. José Antonio Martín Jiménez quien supervisó y tutorizó
este Proyecto desde la Universidad de Salamanca. Escuela Politécnica Superior de Ávila.
Además del uso para cálculos topográficos en ámbitos del uso diario de ingenieros
Técnicos en Topografía o cualquier Ingeniería afín, esta librería también se concibe
como una herramienta de uso para el estudiante de estas disciplinas en las
Universidades. Al tratarse de software libre es perfectamente editable y adaptable a
las necesidades de cálculo y presentación que se consideren oportunas.
TABLA DE CONTENIDOS
1
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
2
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Además del uso para cálculos topográficos en ámbitos del uso diario de ingenieros
Técnicos en Topografía o cualquier Ingeniería afín, esta librería también se concibe
como una herramienta de uso para el estudiante de estas disciplinas en las
Universidades. Al tratarse de software libre es perfectamente editable y adaptable a
las necesidades de cálculo y presentación que se consideren oportunas.
3
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
4
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Entre los países más adeptos al software libre, sus desarrollos y alcance de sus
proyectos de migración se encuentran de la siguiente manera:
ALEMANIA. Alemania es el país con mayor uso del software libre del mundo. No
sólo está presente en todas sus dependencias gubernamentales y universidades, sino
que tiene programas multimillonarios para el desarrollo de aplicaciones libres. En
2009, destinó más de 500 millones de Euros al proyecto “Open Source and Green IT”.
El software libre es tan importante para los alemanes que incluso el 59% de sus
empresas lo utiliza, el argumento más utilizado no es la reducción de costos, sino la
posibilidad de poder modificar el código fuente.
5
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
marco basado en software libre, que permitió crear clúster de empresas locales
capaces de aportar servicios de eAdministracion que de otra manera tendrían que
haber contratado fuera de su comunidad.”
“ O el proyecto de gvSIG de la Consellería d‟Infrestructures i Transport de la
Generalitat Valenciana, un sistema de información geográfico que cuenta con un tejido
empresarial local alrededor del proyecto y están haciendo de la Comunidad Valenciana
el núcleo más activo a nivel mundial de desarrollo GIS en entornos libres. También es
muy conocido el proyecto de Red Tecnológica Educativa de la Junta de Extremadura,
con Linex como primera distribución regional y concepto pionero, adoptado ya por 7
comunidades autónomas.”
“Finalmente, a nivel de administración local, hasta el 80% de los grandes
ayuntamientos cuentan hoy en día con proyectos de software libre, siendo quizá el
más destacado el del Ayuntamiento de Zaragoza”.
Debe distinguirse de “lenguaje informático”, que es una definición más amplia, puesto
que estos incluyen otros lenguajes como son el HTML o PDF que dan formato a un
texto y no es programación en sí misma.
7
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Existen lenguajes del tipo script que son directamente ejecutados por un intérprete y
no necesitan compilación.
8
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
9
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Los lenguajes de script (lenguajes interpretados de muy alto nivel, como Perl y
Python) gozan de creciente importancia e implantación en el mundo del software libre.
Python es un lenguaje de programación fácil de aprender y potente. Dispone de
eficaces estructuras de datos de alto nivel y una solución de programación orientada a
objetos simple pero eficaz. La elegante sintaxis de Python, su gestión de tipos
dinámica y su naturaleza interpretada hacen de él el lenguaje ideal para guiones
(scripts) y desarrollo rápido de aplicaciones en muchas áreas y en la mayoría de las
plataformas.
Python ofrece un rico conjunto de estructuras de datos flexibles. El tipo lista de python
(un vector dinámico heterogéneo) permite introducir con naturalidad el concepto de
secuencia y presentar los algoritmos básicos de manejo de secuencias. Que la
indexación empiece siempre en 0 ayuda a dar el salto a C, C++ o Java. El entorno de
ejecución proporciona comprobación de validez de los índices, eliminando así una de
las principales fuentes de problemas de C y C++. El hecho de que las listas sean
10
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Python ofrece una amplísima colección de módulos (bibliotecas). Hay módulos para
cualquier actividad imaginable: escritura de CGI, gestión de correo electrónico,
desarrollo de interfaces gráficas de usuario, análisis de documentos HTML o XML,
acceso a bases de datos, trabajo con expresiones regulares, etc. No es que haya que
presentar todos los módulos pero sirve para ayudar a consultar la documentación de
las bibliotecas disponibles favorece la programación eficiente.
11
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Numpy es un módulo de Python, escrito en C, que define los vectores numéricos, las
matrices y las operaciones entre ellos. Además de las funciones sobre vectores y
matrices, también incluye funciones trigonométricas del tipo: sin, cos, tan, etc.
Numpy es el paquete fundamental necesario para programación científica con Python.
Además de sus usos científicos obvios, NumPy también se puede utilizar como un
eficiente multi-dimensional contenedor de datos genéricos. Pueden ser definidos tipos
arbitrarios de datos. Esto permite integrar a la perfección y rápidamente con una
amplia variedad de bases de datos.
12
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Scipy es otra librería que usa Numpy. El desarrollo de Scipy comenzó en el año 2001.
Sus orígenes se remontan al paquete con extensiones numéricas para Python
denominado Numeric. Posteriormente apareció Numarray, con la intención de construir
un paquete más flexible y de limpiar el código, aunque resultó ser más lengo para
cálculos matriciales en pocas dimensiones. En el año 2005, el principal impulsor de
Scipy, Travis Oliphant, reunificó ambos en un único paquete que integrse las ventajas
de ambos, y se denominó Numpy, considerado el núcleo de Scipy. Scipy en sí mismo
se concibe actualmente como una extensión de las funcionalidades de Numpy.
Puede ser usado con Linux, Windows y ha sido también compilado para Sun y Mac.
Scipy es un proyecto de software libre que ha sido patrocinado por una compañía,
Enthought inc.
Mayavi
Ipython
Pythonxy
Este texto como Memoria de un Proyecto Final de Máster no pretende ser, ni mucho
menos, un manual de Python, pero sí son necesarios unos conocimientos previos,
primero para comprender la filosofía del programador y posteriormente saber las
utilidades que podemos obtener al trabajar con Python.
Para ello vamos a incluir algunos detalles incluidos entro de la Guía de aprendizaje de
Python por Guido Van Rossum v.2.4, creador de Python. Para la realización de este
documento se ha consultado como aparece en Bibliografía y Referencias en la Web
numerosa documentación pero como punto de partida, parece lógico recoger la
documentación de la Guía de aprendizaje del propio creador de Python.
14
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
De la misma manera, Python trae consigo ciertas funciones que vienen de serie, esto
es, no es necesario cargarlas desde ningún módulo. Dichas funciones dependen de la
versión de Python instalada. En la página
http://docs.python.org/library/functions.html. Nos encontramos con dicha
relación. A modo de resumen, éstas son:
(ver página siguiente)
15
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
En tales casos, Python puede ser el lenguaje que necesitas. Python es simple, pero es
un lenguaje de programación real. Ofrece más apoyo e infraestructura para programas
16
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
grandes que el intérprete de órdenes. Por otra parte, también ofrece mucho más,
comprobación de errores que C y, al ser un lenguaje de muy alto nivel, tiene incluidos
tipos de datos de alto nivel, como matrices flexibles y diccionarios, que llevarían días
de programación en C. Dados sus tipos de datos más generales, se puede aplicar a un
rango de problemas más amplio que Awk o incluso Perl, pero muchas cosas son, al
menos, igual de fáciles en Python que en esos lenguajes.
Python permite escribir programas muy compactos y legibles. Los programas escritos
en Python son normalmente mucho más cortos que sus equivalentes en C o C++, por
varios motivos:
Los tipos de datos de alto nivel permiten expresar operaciones complejas en
una sola sentencia.
El agrupamiento de sentencias se realiza mediante sangrado (indentación) en
lugar de begin/end o llaves.
No es necesario declarar los argumentos ni las variables.
Python
Como la elección del directorio donde reside el intérprete es una opción de instalación,
es posible que se halle en otros lugares. Consulta con tu guru de Python local o tu
administrador de sistemas (por ejemplo, „/usr/local/python‟ es una alternativa
recuente).
18
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Hay módulos de Python que son útiles como programas independientes. Se los puede
llamar mediante “python-m módulo[arg] …”, que ejecuta el fichero de código fuente
de module como si se hubiera dado el nombre completo en la línea de órdenes.
Cuando se leen órdenes desde una tty, se dice que el intérprete está en modo
interacitov. En este modo, espera a la siguiente orden con el indicador principal, que
suele ser tras signos “mayor” (“>>>”). Para las líneas adicionales, se utiliza el
indicador secundario, por omisión tres puntos (“…”).
El IDLE tiene dos ambientes: el shell interactivo con título Python Shell en su
ventana; muestra el prompt >>> y espera un comando, y uno o más editores que se
abren con el menú File --> New Window. Cada editor empieza con el título Untitled en
su ventana, el cual cambia hasta que se salva a un archivo con File --> Save As (y
subsecuentemente File --> Save). Cada editor nos permite ejecutar el código Python
que contiene.
Se recomienda crear una carpeta para realizar y guardar los ejemplos. Para correr idle,
cambiar primero a esa carpeta y entonces correr idle: En MS- Windows:
C:\ejemplos> C:\python22\idle\idle
En Linux:
La primera vez que hacemos un ejemplo, hemos de intentar hacerlo paso a paso en
forma interactiva en el shell, tecleando cada comando. Es la forma en que aprendemos
más que si simplemente copiamos y pegamos.
Una vez que tecleamos y funcionan las cosas, podemos copiar del shell interactivo y
pegamos a una ventana de editor y salvamos en un archivo con terminación .py para
que conservemos lo que hicimos para siempre.
19
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Una vez que partiendo de una ventana vacia, tenemos nuestro código, hemos de
seleccionar File/Save As para guardar el archivo y tenerlo disponible
20
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Una vez que nos hemos asegurado de que tenemos el código guardado ¿cómo
hacemos para ejecutar el programa?. La respuesta es seleccionando Run Module. En
caso de seleccionar Run Module antes de guardar el código, Python nos pide que lo
guardemos antes…
Al seleccionar Run Module, Python irá interpretando línea por línea y mostrando los
resultados a través del Intérprete. Si existiese algún error de sintaxis, se avisa del tipo
de error y dónde se produce. Una vez corregido el problema, se vuelve a intentar el
Run Module.
21
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
3.1.1.2 Módulos
Si salimos del intérprete de Python y vuelves a entrar, las definiciones que se hayan
hecho (funciones y variables) se pierden. Por ello, si se quiere escribir un programa
algo más largo, será mejor que se utilice un editor de texto para preparar la entrada
del intérprete y ejecutarlo con ese fichero como entrada. Esto se llama crear un guión.
Según vayan creciendo los programas, puede que quieras dividirlos en varios ficheros
para facilitar el mantenimiento. Puede que también quieras utilizar una función que
has escrito en varios programas sin tener que copiar su definición en cada programa.
Para lograr esto, Python tiene un modo de poner definiciones en un fichero y utilizarlas
en un guión o en una instancia interactiva del intérprete. Tal fichero se llama módulo;
las definiciones de un módulo se pueden importar a otros módulos o al módulo
principal (la colección de variables accesible desde un guión ejecutado desde el nivel
superior y en el modo de calculadora).
Cada módulo tiene su propia tabla de símbolos, que utilizan todas las funciones
definidas por el módulo como tabla de símbolos global. Por ello, el autor de un módulo
puede utilizar variables globales dentro del módulo sin preocuparse por conflictos con
las variables globales de un usuario del módulo. Por otra parte, si sabes lo que haces,
puedes tocar las variables globales de un módulo con la misma notación utilizada para
referirse a sus funciones, nombreMod.nombreElem.
Los módulos pueden importar otros módulos. Es una costumbre no obligatoria colocar
todas las sentencias “import” al principio del módulo (o guión). Los nombres del
módulo importado se colocan en la tabla de símbolos global del módulo (o guión) que
lo importa.
Existe una variación de la sentencia import que importa los nombres de un módulo
directamente a la tabla de símbolos del módulo que lo importa. Por ejemplo:
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
Esto no introduce el nombre del módulo del que se toman los elementos importados
en la tabla de símbolos local (por lo que, en el ejemplo, no está definido fibo).
Además, existe una variación que importa todos los nombres que define un módulo:
Esto importa todos los nombres, excepto los que empiezan por un guión bajo (_).
Como mejora considerable del tiempo de arranque de programas cortos que utilizan
muchos módulos estándar, si existe un fichero llamado „fiambre.pyc‟ en el directorio
donde se encuentra „fiambre.py‟, se supone que contiene una versión previamente
“compilada a byte” del módulo fiambre. La fecha y hora de la versión de „fiambre.py‟
23
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
3.1.1.6 Paquetes.
Supón que deseas diseñar una colección de módulos (un paquete) para tratar de
manera uniforme ficheros de sonido y datos de sonido. Existen muchos formatos de
fichero de sonido (que se suelen distinguir por la extensión, como „.wav‟, „.aiff‟ o „.au‟),
por lo que podrías necesitar crear y mantener una colección creciente de módulos de
conversión entre los diferentes formatos. También existen muchas operaciones
posibles sobre los datos de sonido (tales como mezclar, añadir eco, ecualizar o generar
un efecto artificial de estereofonía), por lo que, además, estarías escribiendo una serie
de módulos interminable para realizar estas operaciones. He aquí una posible
estructura de tu paquete (expresado en términos de sistema de ficheros jerárquico):
Los ficheros „__init__.py‟ son necesarios para que Python trate los directorios como
contenedores de paquetes. Se hace así para evitar que los directorios con nombres
25
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
comunes, como „test‟, oculten accidentalmente módulos válidos que aparezcan más
tarde dentro del camino de búsqueda. En el caso más sencillo, „__init__.py‟ puede ser
un fichero vacío, pero también puede ejecutar código de inicialización del paquete o
actualizar la variable __all__, descrita posteriormente.
Los usuarios del paquete pueden importar módulos individuales del paquete, por
ejemplo:
import Sonido.Efectos.eco
Así también se carga el submódulo eco y se hace disponible sin su prefijo de paquete,
por lo que se puede utilizar del siguiente modo:
Observa que al utilizar from paquete import elemento, el elemento puede ser tanto un
submódulo (o subpaquete) del paquete como cualquier otro nombre definido por el
paquete, como una función, clase o variable. La sentencia import comprueba primero
si el elemento está definido en el paquete. Si no, asume que es un módulo e intenta
cargarlo. Si no lo consigue, se provoca una excepción ImportError.
26
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Esto significaría que from Sonido.Efectos import * importaría los tres submódulos
mencionados del paquete Sonido.
Si __all__ no está definido, la sentencia from Sonido.Efectos import * no importa
todos los módulos del subpaquete Sonido.Efectos al espacio nominal actual. Sólo se
asegura de que el paquete Sonido.Efectos ha sido importado (ejecutando
posiblemente el código de inicialización de „__init__.py‟) y luego importa cualesquiera
nombres definidos en el paquete. Esto incluye cualquier nombre definido (y
submódulos cargados explícitamente) por „__init__.py‟. También incluye cualquier
submódulo del paquete explícitamente importado por sentencias import anteriores.
import Sonido.Efectos.eco
import Sonido.Efectos.surround
from Sonido.Efectos import *
En este ejemplo, los módulos eco y surround se importan al espacio nominal vigente
porque están definidos en el paquete Sonido.Efectos cuando se ejecuta la sentencia
27
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Es común que los submódulos necesiten hacerse referencias cruzadas. Por ejemplo, el
módulo surround podría utilizar el módulo eco. De hecho, tales referencias son tan
comunes que la sentencia import busca antes en el paquete contenedor que en el
camino de búsqueda de módulos estándar. Por ello, basta con que el módulo surround
use import eco o from eco import filtroeco. Si el módulo importado no se encuentra en
el paquete actual (el paquete del que el módulo actual es submódulo), la sentencia
import busca un módulo de nivel superior con el nombre dado.
Cuando se estructuran los paquetes en subpaquetes (como el paquete Sonido del
ejemplo), no hay un atajo para referirse a los submódulos de los paquetes hermanos y
se ha de utilizar el nombre completo del subpaquete.
Por ejemplo, si el módulo Sonido.Filtros.vocoder necesita utilizar el módulo eco del
paquete Sonido.Efectos, debe utilizar from Sonido.Efectos import eco.
Numerical
arange(), arrayrange()
linspace(), logspace()
Ones and zeros
empty(), empty_like()
eye(), identity()
ones(), ones_like()
28
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
29
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
longfloat(), clongfloat()
Kinds of array
asarray()
asanyarray()
asmatrix()
Changing the number of dimensions
atleast_1d(), atleast_2d(), atleast_3d()
broadcast()
expand_dims()
squeeze()
Transpose-like operations
rollaxis()
swapaxes()
T, transpose()
Reshaping arrays
flat, flatten()
ravel()
reshape(), shape
Array modification
Joining arrays
append()
column_stack()
concatenate()
dstack(), hstack(), vstack()
Splitting arrays
array_split()
dsplit(), hsplit(), split(), vsplit()
Enlarging arrays
tile()
repeat()
Adding and removing elements
delete()
insert()
resize()
trim_zeros()
30
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
unique()
Rearranging elements
fliplr(), flipud()
reshape()
roll()
rot90()
Indexing
[]
take()
put()
putmask()
Indexing syntax
...
slice()
newaxis
index_exp[]
Generating arrays suitable for indexing
c_[]
r_[]
s_[]
nonzero()
where()
indices()
ix_()
mgrid[]
ogrid()
Indexing-like operations
choose()
where()
compress()
diag(), diagonal()
select()
Iterating
flat
31
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
ndenumerate()
ndindex()
Logic
[]
all(), any()
allclose()
alltrue()
nonzero()
piecewise()
sometrue()
Finding things
argmax(), argmin()
searchsorted()
Array statistics
average(), mean()
bincount(), histogram()
corrcoef()
cov()
max(), min(), ptp()
median()
std(), var()
ufuncs
abs(), absolute()
add(), multiply()
angle()
arccos(), arcsin(), arctan()
arccosh(), arcsinh(), arctanh()
arctan2()
bitwise_and(), bitwise_or(), bitwise_xor()
ceil(), floor(), round()
conj(), conjugate()
cos(), sin(), tan()
cosh(), sinh(), tanh()
fix()
32
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
hypot()
logical_and(), logical_not(), logical_or(), logical_xor()
maximum(), minimum()
ufunc methods
accumulate()
outer()
reduce()
Functional constructs
apply_along_axis()
apply_over_axis()
vectorize()
Random numbers
beta(), binomial(), gumbel(), poisson(), standard_normal(),
uniform(), vonmises(), weibull()
bytes()
permutation()
rand(), randint(), randn()
random_integers()
random_sample()
ranf()
sample()
seed()
shuffle()
Array math
clip()
cross()
cumprod(), cumsum()
diff()
digitize()
dot()
inner()
outer()
inv(), pinv()
poly1d()
polyfit()
33
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
prod(), sum()
tensordot()
vdot()
FFT
fft()
fftfreq()
fftshift()
ifft()
Linear algebra
inv()
lstsq()
solve()
svd()
trace()
Array output
savetxt()
set_printoptions()
tofile()
tolist()
Other
sort(), argsort()
binary_repr()
dtype()
fill()
finfo()
generic
imag, real
inf, nan
item()
lexsort()
ndim
shape
typeDict()
34
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
MoinMoin Powered
Pyt
35
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
4 METODOLOGÍA
En nuestro caso hemos partido del concepto de creación de una librería de funciones
del ámbito de la Topografía y Geodesia. Esta librería de Python se estructura como un
paquete con el nombre de la librería “geotopo”, que a su vez contiene 6 paquetes
más, según tipología. Así, tenemos:
Por orden intuitivo desde el punto de vista de aplicación de las herramientas tenemos
los siguientes paquetes:
36
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
37
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
38
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
39
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
40
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Cada uno de estos paquetes (carpetas), como se ha podido ver, contiene a su vez
varios módulos y en cada uno de ellos y con su mismo nombre se define una única
función por módulo salvo en la carpeta de transformción donde como se ha
comentado antes, nos adentramos dentro de la programación orientada a objetos y en
algunos módulos se implementan clases y dentro de estas funciones, etc.
De esta manera al importar una función, la tenemos que importar desde el modulo
que la contenga. Dentro de cada carpeta se aprecia la existencia de un fichero llamado
__init__.py que convierte dicha carpeta en un paquete de Python.
Se advierte que desde el cierre de esta memoria, versión en papel, a la entrega total
de documentación puede haberse ampliado el número de módulos de la librería
“geotop” que sí se incluiría en el CD con la implementación de códigos.
41
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Las comillas triples implican una cadena multilínea. Todo lo que haya entre el principio
y el final de las comillas es parte de una sola cadena, incluyendo los retornos de carro
y otras comillas. Pueden usarse para definir cualquier cadena, pero donde suelen estar
más presentes es haciendo de cadena de documentación.
42
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
43
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
44
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
En el caso que nos atañe de la librería geotopo, hemos considerado introducir unos
comentarios descriptivos de los módulos mediante el carácter # y tras la definición de
las funciones se incluyen unas cadenas de documentación:
Cadena de
documentación de
funciones
45
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
ISO 8859-1 es una norma de la ISO que define la codificación del alfabeto latino,
incluyendo diacríticos como letras acéntuadas, ñ,) y letras especiales, necesarios para
la escritura de las siguientes lenguas originarias de Europa occidental: alemán,
aragonés, asturiano, castellano, catalán, danés, escocés, español, feroés, finés,
francés, gaélico, gallego, inglés, islandés, italiano, neerlandés, noruego, portugués,
sueco y Euskera.
Si trabajamos con IDLE, con el uso de los acentos (en general con los caracteres no
ASCII) nos dará error. Si en el código de un programa escribimos una cadena que
contenga caracteres no ASCII(acentos, ñ,¿,¡), al guardar el archivo por primera vez,
IDLE nos muestra el siguiente mensaje de aviso:
Python no tiene una primera o última linea exigida pero sí que es habitual dar la
localización de Python como primera línea en forma de comentario.
#!/usr/bin/python.
46
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
De esta manera podemos tener una idea de las funciones implementadas, los datos de
partida necesarios y los resultados a obtener, así como la interrelación de cada función
con el resto de funciones de la librería geotopo.
busca2col. - Localiza la primera fila con los valores recibidos en las dos columnas
indicadas.
Recibe: Valor en la primera y segunda columnas, posiciones de las
columnas y matriz de busqueda.
Devuelve: Primera fila que cumple, comenzando en 0.
entrada=(valorcol1,poscol1,valorcol2,poscol2,matriz)
salida=orden de la primera fila que cumple, comenzando en 0.(ó -1 si no existe)
import os,sys
from numpy import shape
entrada=(valor,matriz)
salida=posición, número de fila comenzando en 0 (ó -1 si no existe)
import os,sys
from numpy import shape
entrada=(valor,matriz,nfil)
salida=posición, número de columna, comenzando en 0 (ó -1 si no existe)
import os,sys
from numpy import shape
entrada=(valor,matriz,ncol)
salida=posición, número de fila, comenzando en 0 (ó -1 si no existe)
import os,sys
from numpy import shape
entrada=(colum,matriz)
salida=matriz de entrada ordenada
import os,sys
from numpy import shape
48
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(número)
salida=parte entera del número
import os,sys
from numpy import floor
entrada=(pseudesexa)
salida=radianes
import os,sys
from numpy import pi
from geotopo.general.p_entera import p_entera
entrada=( radianes)
salida= pseudesexa
import os,sys
from numpy import pi
from geotopo.general.p_entera import p_entera
49
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(xi,yi,xj,yj)
salida=acimut en radianes
import os,sys
from numpy import arctan2,pi
entrada=(xi,yi,xj,yj)
salida=distancia (misma unidad que coordenadas de entrada
import os,sys
from numpy import sqrt
entrada=(dg,Instr.,ni,alt,nl).
Dg=distancia geometrica
Instr=Matriz de instrumentos
Ni=Altura de instrumento
Altp=Altura de prisma
Nl=Número de veces de medida de distancia.
salida=error de distancia en metros.
import os,sys
from numpy import sqrt,pi
entrada=(dg,Instr.,ni,alt,nl,fsalida).
dg=distancia geometrica
instr=Matriz de instrumentos
ni=Altura de instrumento
altp=Altura de prisma
nl=Número de veces de medida de distancia.
50
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(Instr.,ni,dis,altp,nl).
salida=error de lectura horizontal en radianes.
import os,sys
from numpy import sqrt,pi
edirev. – Cálculo del error de la lectura vertical realizada con un teodolito, utilizando
la formulación clásica de teoría de errores.
entrada=(instr.,ni, nl).
salida=error de lectura cenital en radianes en radianes.
import os,sys
from numpy import sqrt,pi
entrada=(dg,lv,ap,edg,elv,Instr.,ni).
salida=xp,yp,eplani,solz,esolz
import os,sys
from numpy import pi,sqrt,cos,tan
entrada=(datos,instru).
salida= xp,yp,angmin
import os,sys
from numpy import sin,cos,tan,arctan2,pi,zeros
from geotopo.general.ordena import ordena
entrada=(datos,instru).
salida= xp,yp,eplani
import os,sys
from numpy import shape,pi,sin,cos,tan,arctan2,dot,transpose,zeros,sqrt
from geotopo.topografia.edireh import edireh
51
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(datos,instru).
salida= xp,yp,eplani,vzp,vezp
import os,sys
from numpy import zeros,shape,sin,cos
from geotopo.topografia.intinv2e import intinv2e
from geotopo.topografia.distancia import distancia
from geotopo.topografia.edirev import edirev
from geotopo.topografia.edgcla import edgcla
from geotopo.topografia.eincz import eincz
entrada=(aut,nelipsoide)
salida=lat
import os,sys
from numpy import sin,arcsin
from geotopo.general.psdo2rad import psdo2rad
from geotopo.general.psdo2rad import psdo2rad
entrada(lat1,lon1,lat2,lon2,lat3,lon3)
salida=[latnp,lonnp,colat]
import os,sys
from numpy import pi,sin,cos,arccos,arctan,arctan2,zeros
52
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada(az,v,dg)
salida=[ie,in,iu]
import os,sys
from numpy import sin,cos,zeros
entrada=(lhz,az,lat1,lat2,h2,nelipsoide)
salida=lhz12c
import os,sys
from numpy import sin,cos,pi
from elipsoide import elipsoide
from radioem import radioem
entrada=(lhz,s12,az12,lat1,lat2,nelipsoide)
salida=lhz12c
import os,sys
from numpy import sin,cos,pi
from elipsoide import elipsoide
from radioem import radioem
entrada=(cre,nelipsoide)
salida=lat
import os,sys
from numpy import sin,cos,tan,arctan,exp,pi
from geotopo.general.psdo2rad import psdo2rad
from elipsoide import elipsoide
entrada=(lat,lon,semiae,semibe,aziae,nelipsoide,huso)
salida=[semia,simib,azia]
import os,sys
from numpy import zeros,pi
from geotopo.proy_cartograficas.kputm import kputm
from geotopo.proy_cartograficas.kputmh import kputmh
from geotopo.proy_cartograficas.convutm import convutm
from geotopo.proy_cartograficas.convutmh import convutmh
53
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(nelipsoide,lat)
salida=[a,f,b,e1,e2]esfera
import os,sys
from numpy import zeros
from elipsoide import elipsoide
from radiopv import radiopv
elipsoide - calculo los 5 parámetros (a,f,b,e1 y 22) de los elipsoides ED50, GRS80
y WGS84 en función de un código 1,2,3, respectivamente
entrada=ie,in,iu
salida=[az,dg,v]
import os,sys
from numpy import zeros,arcsen,arctan2,pi,sqrt
entrada=(lat,lon,ie,in,iu)
salida=[ix,iy,iz]
import os,sys
from numpy import sin,cos,zeros
54
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat,lon,h,nelipsoide
salida=[X,Y,Z]
import os,sys
from numpy import cos,sin,zeros
from elipsoide import elipsoide
from radiopv import radiopv
entrada=(lam,nelipsoide
salida=lat
import os,sys
from numpy import cos,sin
from elipsoide import elipsoide
from geotopo.general.rad2psdo import rad2psdo
entrada=(lam,nelipsoide
salida=lam
import os,sys
from numpy import sin cos
from elipsoide import elipsoide
entrada=(lat,nelipsoide)
salida=aut
import os,sys
from numpy import sin,log
from elipsoide import elipsoide
entrada=(lat,nelipsoide)
salide=cre
import os,sys
from numpy import sin,tan,pi,log
entrada =(lat,lon)
salida=ondulación
55
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
import os,sys
from numpy import pi,sqrt,cos,sin,tan
entrada=(lat1,lon1,s,azi,resfera)
salida=[lat,lon]
import os,sys
from numpy import cos,sin,tan,arcsin,arcos,arctan2,pi,zeros,transpose,dot
entrada=(lat1,lon1,s,a12,nelipsoide)
salida=[lat2,lon2,azi,21]
import os,sys
from numpy import zeros,sin,cos,tan,pi
from radiopv import radiopv
from radioem import radioem
entrada=(lat1,lon1,s,a12,nelipsoide)
salida=[lat2,lon2,azi,21]
import os,sys
from numpy import zeros,sin,cos,tan,pi
from radiopv import radiopv
from radioem import radioem
from elipsoide import elipsoide
entrada=(lat1,lon1,s,a12,nelipsoide)
salida=[lat2,lon2,azi,21]
import os,sys
from numpy import zeros,sin,cos,tan,pi
from radiopv import radiopv
from radioem import radioem
from elipsoide import elipsoide
entrada=(lat1,lon1,s,a12,nelipsoide)
salida=[lat2,lon2
import os,sys
from numpy import zeros,sin,cos,tan,pi,sqrt
from radiopv import radiopv
56
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=( lat1,lon1,lat2,lon2,resfera)
salida=[s12,a12]
import os,sys
from numpy import cos,sin,tan,arcsen,arccos,arctan2,dot,zeros,pi
entrada=( lat1,lon1,lat2,lon2,nelipsoide)
salida=[ s12,a12,a21]
import os,sys
from numpy import zeros,sin,cos,tan,arcsin,arctan,arctan2,arccos,sqrt,pi
entrada=( lat1,lon1,lat2,lon2,nelipsoide)
salida=[ s12,a12,a21]
import os,sys
from numpy import cos,sin,tan,arcsin,arcos,arctan,arctan2,zeros,sqrt,pi
from elipsoide import elipsoide
from radiopv import radiopv
from piesfcr import piesfcr
from pdesfcr import pdesfcr
entrada=(lat1,lon1,lat2,lon2,nelipsoide)
salida=[dl,a12]
import os,sys
from numpy import arctan2,cos,zeros,pi
from elipsoide import elipsoide
from lat2cre import lat2cre
from radiopv import radiopv
from lam import lam
entrada=(lat,lon)
salida=psi_ed50
import os,sys
from numpy import pi,sqrt,cos,sin,tan
from radioem import radioem
from radiopv import radiopv
57
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat,nelipsoide)
salida=radioem
import os,sys
from numpy import sin
from elipsoide import elipsoide
entrada=(lat,az,nelipsoide)
salida=radieul
import os,sys
from numpy import sin,cos
from radioem import radioem
from radiopv import radiopv
entrada=(lat,nelipsoide)
salida=radiopv
import os,sys
from numpy impor sqrt,sin
from elipsoide import elipsoide
entrada=( dc,az,lat1,nelipsoide)
salida=recae
impor os,sys
from numpy import sin,cos,arcsen
from radioem import radioem
from radiopv import radiopv
entrada=(dg,az,lat1,h1,h2,nelipsoide)
salida=rdtce
import os,sys
from numpy import sin,cos,sqrt
from radioem import radioem
from radiopv import radiopv
58
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(X,Y,Z,nelipsoide)
salida=[lat,lon,h]
import os,sys
from numpy import cos,sin,tan,arctan,arctan2,sqrt,zeros
from elipsoide import elipsoide
from radiopv import radiopv
entrada=( X1,Y1,Z1,DX,DY,DZ,nelipsoide)
salida=[s12,az12,h12]
import os,sys
from numpy import zeros
from tri2geo import tri2geo
from pigbslm import pigbslm
entrada=( lat1,lon1,ix,iy,iz)
salida=[ dg,az12,lv]
import os,sys
from numpy import zeros
from xyz2enu import xyz2enu
from enu2cla import enu2cla
entrada=(lat,lon,IX,IY,IZ)
salida=[ie,in,iu]
import os,sys
from numpy import sin,cos,zeros.
59
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lon)
salida=huso
import os,sys
from numpy import
entrada=(X,Y,Lon0,TX,TY,nelipsoide)
salida=[lat,lon]
import os,sys
from numpy import zeros,arctan2,pi
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.aut2lat import aut2lat
entrada=(lon,lon0)
salida=convest
import os,sys
entrada=(lat,lon,lon0,nelipsoide)
salida=convgk
import os,sys
from numpy import sin,cos,tan
from geotopo.geodesia.elipsoide import elipsoide
60
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lon,lat0,lon0)
salida=convlamb
import os,sys
from numpy import sin
entrada=(lat,lon,nelipsoide)
salida=convutm
import os,sys
from numpy import tan,cos,sin,pi
from cahuso import calhuso
from geotopo.geodesia.elipsoide import elipsoide
entrada=(lat,lon,nelipsoide)
salida=convutmh
import os,sys
from numpy import tan,cos,sin,pi
from geotopo.geodesia.elipsoide import elipsoide
entrada=(lat1,lon,1,lat2,lon2,nelipsoide
salida=corrección en metros
import os,sys
from numpy import cos
from utm2geo import utm2geo
from geo2utmh import geo2utmh
from calhuso import calhuso
from getopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.radioem import radioem
from geotopo.topografia.acimut import acimut
from geotopo.topografia.distancia import distancia
61
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat1,lon1,lat2,lon2,lat0,nelipsoide)
salida=dc (reducción angular de la cuerda en radianes
import os,sys
from numpy import sin,cos
from lat2esc import lat2esc
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.pigbslm import pigbslm
from geotopo.geodesia.pdgrk4o import pdgrk4o
entrada=(lat1,lon1,lat2,lon2,lat0,lon0,p,nelipsoide)
salida=dc(reducción angular de la cuerda en radianes)
import os,sys
from numpy import cos,sin
from kplamb import kplamb
from geotopo.geodesia.pigbslm import pigbslm
from geotopo.geodesia.pdgrk4o import pdgrk4o
from geotopo.geodesia.radiopv import radiopv
entrada=(lat1,lon1,lat2,lon2,lon0,p,nelipsoide)
salida= dc(reducción angular de la cuerda en radianes)
import os,sys
from numpy import cos
from geo2gk import geo2gk
from gk2geo import gk2geo
from geotopo.geodesia.radioem import radioem
from geotopo.geodesia.radiopv import radiopv
from getopo.geodesia.elipsoide import elipsoide
entrada=(lat1,lon1,lat2,lon2,lat0,p,elipsoide
salida= dc(reducción angular de la cuerda en radianes)
import os,sys
from numpy import sin,tan,cos,exp,zeros
from geo2lamb import geo2lamb
from kplamb import kplamb
62
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat1,lon1,lat2,lon2,lat0,lon0,p,nelipsoide)
salida= dc(reducción angular de la cuerda en radianes)
import os,sys
from numpy import cos, sin
from kplamb import kplamb
from geotopo.geodesia.pigbslm import pigbslm
from geotopo.geodesia.pdgrk4o import pdgrk4o
from geotopo.geodesia.radiopv import radiopv
entrada=( lat1,lon1,lat2,lon2,nelipsoide)
salida= dc(reducción angular de la cuerda en radianes
import os,sys
from numpy import cos,pi
from geo2utmh import geo2utmh
from utm2geo import utm2geo
from calhuso import calhuso
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.radioem import radioem
entrada=( lat1,lon1,lat2,lon2,huso,nelipsoide)
salida= dc(reducción angular de la cuerda en radianes
import os,sys
from numpy import cos,pi
from geo2utmh import geo2utmh
from utm2geo import utm2geo
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.radioem import radioem
63
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=( lat1,lon1,lat2,lon2,s,nelipsoide)
salida=corrección
import os,sys
from numpy import cos
from geo2utmh import geo2utmh
from utm2geo import utm2geo
from calhuso import calhuso
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.radioem import radioem
from geotopo.topografia,acimut import acimut
entrada=(lat,lon.latp.lonp)
salida=[lat,lon,g]
import os,sys
from numpy import cos,sin,tan,arcsen,arctan,dot,zeros,pi
from geotopo.geodesia.piesfcr import piesfcr
entrada=(lat,lon.lon0,radio,tx,ty)
salida=[x,y] estp
import os,sys
from numpy import zeros,sin,cos
entrada=(latn,lonn,latp,lonp
salida=[lat0,lon0,giro
import os,sys
from numpy import cos,sin,tan,arcsen,arctan2,dot,zeros,pi,transpose
from geotopo.geodesia.piesfcr import piesfcr
entrada=(lat,lat0,nelipsoide
64
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
salida=lat
import os,sys
from numpy import sin,tan,arctan,pi
from geotopo.general.psdo2rad import psdo2rad
from geotopo.geodesia.elipsoide import elipsoide
entrada=(x,y,lon0,radio,tx,ty)
salida=[x,y]
import os,sys
from numpy import zeros,arctan2,arctan,sin,pi
entrada=( lat,lon,lon0,tx,ty,nelipsoide)
salida=[X,Y]
import os,sys
from numpy import zeros
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.lat2aut import lat2aut
entrada=(lat,lon,lat0,lon0,tx,ty,nelipsoide)
salida=[X,Y]
import os,sys
from numpy import
from lat2esc import lat2esc
from esf2esfg import esf2esfg
from esf2estp import esf2estp
from geotopo.geodesia.radiopv import radiopv
entrada=( lat,lon,lon0,p,tx,ty,nelipsoide)
salida= [x,y]gk
import os,sys
from numpy import cos,tan,pi,zeros
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lam import lam
65
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=( lat,lon,lat0,lon0,p,tx,ty,nelipsoide)
salida=[x,y]lambert
import os,sys
from numpy import sin,tan,cos,exp,zeros
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lat2cre import lat2cre
entrada=( lat,lon,lon0,tx,ty,nelipsoide)
salida= [x,y]mercator
import os,sys
from numpy import zeros
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.lat2cre import lat2cre
entrada=(lat,lon,nelipsoide)
salida=[X,Y] UTM
import os,sys
from numpy import zeros,tan,cos,pi
from calhuso import calhuso.
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lam import lam
entrada=(lat,lon,huso,nelipsoide)
salida=[X,Y] UTM
import os,sys
from numpy import zeros,tan,cos,pi
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lam import lam
entrada=(X,Y,lon0,p,tx,ty,nelipsoide)
salida=[lat,lon]
import os,sys
66
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
kdesfera. - cálculo del coeficiente de anamorfosis lineal, a aplicar a una geodésica del
elipsoide, al proyectarla en la proyección general conforme sobre una esfera. Utiliza la
integración numérica de Simpson.
entrada=(lat1,lon1,lat2,lon2,lat0,nelipsoide)
salida= kdesfera
import os,sys
from kpesfera import kpesfera
from geotopo.geodesia.pigbslm import pigbslm
from geotopo.geodesia.pdgrk4o import pdgrk4o
entrada=( lat1,lon1,lat2,lon2,lon0,radio,tx,ty)
salida=kdestp
import os,sys
from kpestp import kpestp
from esf2estp import esf2estp
from estp2esf import estp2esf
kdgk. - cálculo del coeficiente de anamorfosis lineal, a aplicar a una geodésica del
elipsoide, al proyectarla en la proyección general de Gauss-Krüger. Utiliza la
integración numérica de Simpson.
entrada=( lat1,lon1,lat2,lon2,lon0,p,nelipsoide)
salida=kdgk
import os,sys
from geo2gk import geo2gk
from gk2geo import gk2geo
from kpgk import kpgk
entrada=( lat1,lon1,lat2,lon2,lat0,lon0,p,nelipsoide)
salida=kdlamb
import os,sys
from geolamb import geolamb
from lamb2geo import lamb2geo
from kplamb import kplamb
67
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
kdutm. - cálculo del coeficiente de anamorfosis lineal, a aplicar a una geodésica del
elipsoide, al proyectarla en la proyección UTM, en el huso del primer punto. Utiliza la
integración numérica de Simpson.
entrada=( lat1,lon1,lat2,lon2,nelipsoide)
salida=kdutm
import os,sys
from calhuso import calhuso.
from geo2utmh import geo2utmh
from utm2geo import utm2geo
from kputmh import kputmh
entrada= lat1,lon1,lat2,lon2,huso,helipsoide)
salida=kdutmh
import os,sys
from geo2utmh import geo2utmh
from utm2geo import utm2geo
from kputmh import kputmh
kpesfera. - cálculo del coeficiente de anamorfosis lineal puntual, para un punto del
elipsoide, en la proyección general conforme sobre una esfera.
entrada=( lat,lat0,nelipsoide)
salida=kpesfera
import os,sys
from numpy import cos,sin,tan,exp
from lat2esc import lat2esc
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.elipsoide import elipsoide
entrada=(lat)
salida=kpestp
import os,sys
from numpy import sin
kpgk. - cálculo del coeficiente de anamorfosis lineal puntual, para un punto del
elipsoide, en la proyección general de Gauss-Krüger.
entrada=(lat,lon,lon0,p,nelipsoide)
salida=kpgk
68
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
import os,sys
from numpy import sin,cos,tan
from clahuso import calhuso
from geotopo.geodesia.elipsoide import elipsoide
kplamb. - cálculo del coeficiente de anamorfosis lineal puntual, para un punto del
elipsoide, en la proyección general cónica conforme de Lambert.
entrada=(lat,lat0,p,nelipsoide)
salida=kplamb
import os,sys
from numpy import cos,sin,tan,exp
from geotopo.geodesia.lat2cre import lat2cre
from geotopo.geodesia.radiopv import radiopv
kputm. - cálculo del coeficiente de anamorfosis lineal puntual, para un punto del
elipsoide, en la proyección UTM, en el huso que le corresponde al punto por su
longitud geodésica.
entrada=(lat,lon,nelipsoide)
salida=kputm
import os,sys
from numpy import tan,cos,sin,pi
from calhuso import calhuso.
from geotopo.geodesia.elipsoide import elipsoide
kputmh. - cálculo del coeficiente de anamorfosis lineal puntual, para un punto del
elipsoide, en la proyección UTM, en el huso indicado.
entrada=(lat,lon,huso,nelipsoide)
salida=kputmh
import os,sys
from numpy import sin,cos,tan,pi
from geotopo.geodesia,elipsoide import elipsoide
entrada=( x,y,lat0,lon0,p,tx,ty,nelipsoide)
salida=[lat,lon]
import os,sys
from numpy import sin,tan,arctan,pi,log,sqrt,zeros
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lat2cre import lat2cre
from geotopo.geodesia.cre2lat import cre2lat
69
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat,lat0,nelipsoide)
salida=latesfc
import os,sys
from numpy import sin,tan,arctan,pi
from geotopo.geodesia.elipsoide import elipsoide
entrada= (x,y,lon0,tx,ty,nelipsoide)
salida=[lat,lon]
import os,sys
from numpy import zeros,arctan2,pi
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.cre2lat import cre2lat
entrada=(X,Y,huso,nelipsoide)
salida=[lat,lon]
import os,sys
from numpy import sqrt,pi,tan,cos,sin,zeros
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.lam2lat import lam2lat
from geotopo.geodesia.radiopv import radiopv
entrada=(latitud,longitud)
salida=ondulación
import os,sys
from numpy import fromfile, reshape
from geoide import Geoide
entrada=(latitud,longitud)
salida=ondulación
import os,sys
from numpy import fromfile, reshape,pi,floor,ndarray
71
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
72
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
entrada=(lat,lon,nelipsoide)
salida=[X,Y] UTM
73
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
import os,sys
from numpy import zeros,tan,cos,pi
from calhuso import calhuso.
from geotopo.geodesia.elipsoide import elipsoide
from geotopo.geodesia.radiopv import radiopv
from geotopo.geodesia.lam import lam
Ejecutando Run Module, Python abre el Python Shell. En esta pantalla, tenemos que
introducir el nombre de la función a usar geo2utm y entre paréntesis los valores que
se especifican de entrada en la descripción de la función entrada=(lat,lon,nelipsoide)
75
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
76
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Para cálculos más complejos, de mayor número de puntos, etc, a modo de práctica se
ha implementado el código de distintos tipos de cálculo de ejemplo. Distribuidos en 2
tipologías diferentes “topografia” y “geodesia” se han incluido códigos para la
resolución, e impresión de distintos tipos de problemas realizando “import” de
funciones declaradas en los módulos de los distintos subpaquetes de geotopo.
En total se han realizada 4 casos prácticos dentro del apartado de topografía. Todos ellos,
tanto los ficheros .py, como los ficheros de datos de cálculos y salida de datos se incluyen en la
versión digital de esta memoria. Sólo se muestra el código de la práctica topo_practica1. Del
resto, sólo se ha incluido la salida de datos.
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
# -*- coding: cp1252 -*-
# Práctica 1: CÁLCULOS TOPOGRÁFICOS ELEMENTALES
# Datos: Coordenadas del punto de estación
# Sistema de referencia local
#'SEMANA GEOMÁTICA - 2011. Bogotá D.C. Colombia\n')
#'TALLER .......: Cálculos topográficos con software libre, librería GeoTop\n')
#'AUTORES ......: Dr. David Hernández López, david.hernandez@ulcm.es\n')
#' Dra. Beatriz Felipe García, bfelipe@jccm.es - beatriz.felipe@uclm.es\n')
77
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
#
#'MIGRACIÓN A PYTHON: Juan Pedro García Tendero, juanpedrogarcia@terra.es\n'
#
# En esta versión de la práctica utilizando la librería geotopo en el cálculo de azimutes,
perímetro y superficie.
import os,sys
from numpy import matrix,array,shape,pi,zeros,concatenate,mean,sin,cos,sqrt
from geotopo.topografia.acimut import acimut
from geotopo.general.perimetro import perimetro
from geotopo.general.areacor import areacor
#Cálculo de azitutes del punto de estación a cada uno de los puntos radiados
#La función azimut de la librería Geotop devuelve el valor en radianes
acimutes=zeros((mref,1))
for i in range (1,mref+1):
#Se leen la identificación y las coordenadas del punto radiado y se almacenan en variables
temporales
num_pref=ref[i-1,0]
x_pref=ref[i-1,1]
y_pref=ref[i-1,2]
azi_pe_pref=acimut(x_pe,y_pe,x_pref,y_pref)
acimutes[i-1,0]=azi_pe_pref*200.0/pi
ref=concatenate((ref,acimutes),axis=1)
78
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
coord_polares[i-1,0]=num_prad
azi_pe_prad=lhz_pe_prad+des_mean
if azi_pe_prad>(2.0*pi):
azi_pe_prad=azi_pe_prad-2.0*pi
coord_polares[i-1,1]=azi_pe_prad*200.0/pi
dr_pe_prad=dg_pe_prad*sin(lv_pe_prad)
coord_polares[i-1,2]=dr_pe_prad
coord_cart[i-1,0]=num_prad
coord_cart[i-1,1]= x_pe+dr_pe_prad*sin(azi_pe_prad)
coord_cart[i-1,2]= y_pe+dr_pe_prad*cos(azi_pe_prad)
coord_cart[i-1,3]= z_pe+alti_pe+dg_pe_prad*cos(lv_pe_prad)-
altp_pe_prad+0.42*dr_pe_prad**2/rt
#Impresión de resultados
fsalida=open('topo.practica1.sal','w')
79
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
80
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
81
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Y= 4065.437 m.
Resultados:Datos de replanteo
Base Punto Azimut Distancia CotaProyecto CotaTerreno CotaRoja
1 1 385.6489 75.460 96.930 96.539 0.391
1 2 266.7262 77.786 96.903 98.259 -1.356
1 3 121.9144 40.883 95.329 94.688 0.641
1 4 27.9600 67.437 95.045 95.587 -0.542
82
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
En total se han realizada 5 casos prácticos dentro del apartado de geodesia. Todos ellos, tanto
los ficheros .py, como los ficheros de datos de cálculos y salida de datos se incluyen en la
versión digital de esta memoria. Sólo se muestra el código de la práctica geo_practica1. Del
resto, sólo se ha incluido la salida de datos.
83
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
84
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
[m,n]=c4258h.shape
grs80=elipsoide(2)
# Recibe: Codigo del elipsoide (nelipsoide):
# 1 - Ed50. Devuelve el elipsoide Internacional 1924
# 2 - Etrs89. Devuelve el elipsoide GRS80
# 3 - Wgs84. Devuelve el elipsoide Wgs84
# Definición del elipsoide
fsalida=open('geo_practica1.sal','w')
fsalida.write('SEMANA GEOMÁTICA - 2011\n')
fsalida.write('TALLER .......: Cálculos geodésicos y de cartografía matemática con software
libre, librería GeoTop\n')
fsalida.write('AUTORES ......: Dr. David Hernández López, david.hernandez@ulcm.es\n')
fsalida.write(' Dra. Beatriz Felipe García, bfelipe@jccm.es -
beatriz.felipe@uclm.es\n')
fsalida.write('MIGRACIÓN A PYTHON: Juan Pedro García Tendero, juanpedrogarcia@terra.es\n')
fsalida.write('PRÁCTICA 1 ...: CÁLCULOS GEODÉSICOS ELEMENTALES - OPERACIONES DE CONVERSIÓN ENTRE
COORDENADAS GEODÉSICAS Y ECEF\n')
fsalida.write('- Nota.- Todos los ángulos se expresan en seudo decimal sexagesimal:
gg.mmssfs\n')
fsalida.write('- Nota.- Las magnitudes lineales se expresan en metros.\n')
fsalida.write('- Sistema de Referencia ................: ETRS89\n')
fsalida.write('- Parámetros del elipsoide .............: GRS80\n')
fsalida.write(' - Semieje mayor ......................: %10.3f m.\n'%grs80[0])
fsalida.write(' - Inverso del aplanamiento ...........: %10.9f adim.\n'%grs80[1])
fsalida.write(' - Semieje menor ......................: %10.3f m.\n'%grs80[2])
fsalida.write(' - Primera excentricidad al cuadrado ..: %10.9f adim.\n'%grs80[3]**2)
fsalida.write(' - Segunda excentricidad al cuadrado ..: %10.9f adim.\n'%grs80[4]**2)
85
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
fsalida.write('%15.3f\n'%hElip)
fsalida.close()
86
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
87
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
88
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
…….
.......……
89
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
90
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
6 CONCLUSIONES FINALES.
Con las funciones definidas dentro de Numpy hemos realizado la mayor parte
de los cálculos necesarios en nuestra biblioteca.
91
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
Inclusión de una interfaz gráfica a los cálculos realizados para poder tener
visualmente el resultado de los mismos.
92
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
8 ANEJO.
8.1 EQUIVALENCIAS ENTRE FUNCIONES EN MATLAB Y PYTHON.
mat([[1.,2.,3.],
array([[1.,2.,3.],
[ 1 2 3; 4 5 6 ] [4.,5.,6.]]) or 2x3 matrix literal
[4.,5.,6.]])
mat("1 2 3; 4 5 6")
a.conj().transpose() or
a' a.H conjugate transpose of a
a.conj().T
93
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
a .* (a>0.5) a * (a>0.5) mat(a.A * (a>0.5).A) a with elements less than 0.5 zeroed out
arange(1.,11.) or
mat(arange(1.,11.)) or create an increasing vector see note
1:10 r_[1.:11.] or
r_[1.:11.,'r'] 'RANGES'
r_[1:10:10j]
arange(10.) or
mat(arange(10.)) or create an increasing vector see note
0:9 r_[:10.] or
r_[:10.,'r'] 'RANGES'
r_[:9:10j]
ogrid[0:9.,0:6.] or
mat(...) the best way to eval functions on a grid
ix_(r_[0:9.],r_[0:6.]
94
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
concatenate((a,b),1) or
hstack((a,b)) or
[a b] concatenate((a,b),1) concatenate columns of a and b
column_stack((a,b)) or
c_[a,b]
concatenate((a,b)) or
[a; b] vstack((a,b)) or concatenate((a,b)) concatenate rows of a and b
r_[a,b]
sqrt(dot(v,v)) or sqrt(dot(v.A,v.A)) or
norm(v) Sci.linalg.norm(v) or Sci.linalg.norm(v) or L2 norm of vector v
linalg.norm(v) linalg.norm(v)
element-by-element OR operator
a|b logical_or(a,b)
(Numpy ufunc) see note 'LOGICOPS'
linalg.solve(a,b) if a is square
a\b solution of a x = b for x
linalg.lstsq(a,b) otherwise
95
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
L,U = Sci.linalg.lu(a) or
[L,U,P]=lu(a) mat(...) LU decomposition
LU,P=Sci.linalg.lu_factor(a)
unique(a) unique(a)
squeeze(a) a.squeeze()
96
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
9 BIBLIOGRAFÍA
DOWNEY, A.; ELKNER, J.; MEYERS, C.: Aprenda a Pensar Como un Programador con
Python.
GONZÁLEZ DUQUE, R: Python PARA TODOS. Edición Internet bajo licencia Creative
Commons Reconocimiento 2.5 España. Descargable en http://mundogeek.net/tutorial-
python/
NUMPY COMMUNITY.: NumPy User Guide. Release 1.6.0. Mayo. Edición Internet.
Descargable en http://www.scipy.org/
97
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
http://enfoquevirtual.wordpress.com/category/tutorial/
http://geektheplanet.net/1347/how-to-instalar-pydev-en-aptana.xhtml
http://mundogeek.net/archivos/2008/03/28/python-modulos-y-paquetes/
http://www.thebitsource.com/programming-software-development/python/python-
application-development-aptana-pydev/
http://www.youtube.com/watch?v=XtnfY2cBbMA.
youtube interesante trabajo con pydev y modulos
http://coding.derkeiler.com/Archive/Python/comp.lang.python/2005-
08/msg03511.html
página que explica cómo solucionar los problemas de Non-ASCII character.
http://es.wikibooks.org/wiki/Inmersi%C3%B3n_en_Python/Su_primer_programa_en_P
ython/Documentado_de_funciones
página que explica la cadena de documentación después de definir una función con
“””___”””. (triples comillas).
http://www.python.org/dev/peps/pep-0008/
style guide for python code.
http://mundogeek.net/archivos/2008/07/07/documentacion-en-python/
habla de la forma de documentar en python
http://www.python.org/dev/peps/pep-0257/
documentación y comentarios.
http://programandoideas.com/comentarios-en-python/
documentación y comentarios.
http://www.youtube.com/watch?v=v0sqRYuL5e8
tutorial de python con aptana.
http://www.youtube.com/watch?v=29mq1Bn52GY&feature=related
youtube tutorial
http://projects.scipy.org/numpy/browser/trunk/numpy/matlib.py?rev=8567
página que habla un poco de matrices.
98
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
http://www.gfc.edu.co/~arsran/guias42/p8guia42.html
cosas interesantes de matrices.
http://docencia-eupt.unizar.es/ctmedra/scipy_tutorial/scipy_tutorial.html
varios sobre python
http://docs.python.org/tutorial/modules.html
muy buena de paquetes, etc.
http://www.linux-itt.com/2008/04/python-mdulos-y-paquetes.html
más sobre paquetes
http://www.mclibre.org/consultar/python/otros/in03_idle.htmlç
coding cp1252.
http://www.mclibre.org/consultar/python/
tutorial de python en la web. Idle
http://bioinf.comav.upv.es/courses/linux/python/modulos.html
csv listas,etc.
http://www.davidricardo.com.mx/?p=1173
ok muy bueno importación csv como matriz
http://www.aprenderpython.org/
http://www.scipy.org/Numpy_Example_List_With_Doc
página muy importante de scipy
http://jsbsan.blogspot.com/2011/01/calculo-de-un-area-de-un-poligono.html
video sobre cálculo de areas de polígonos irregulares
http://mathesaurus.sourceforge.net/matlab-numpy.html
vip.relación entre operaciones con octave y con python
http://www.scipy.org/Tentative_NumPy_Tutorial
pagina importante de scipy
http://tecnologicum.wordpress.com/astronomia/video-tutoriales-de-python/
todos los videotutoriales de python
http://www.youtube.com/watch?v=Oj3MZXWXGiU&feature=related
csv
99
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
http://translate.google.es/translate?hl=es&langpair=en%7Ces&u=http://www.scipy.or
g/NumPy_for_Matlab_Users
interesante sobre numpy…
http://wiki.python.org/moin/HowTo/Sorting/
interesante de sort
http://wiki.python.org/moin/HowTo/Sorting/#Operator_Module_Functions
sort, itemgetter,etc
http://code.activestate.com/recipes/304440-sorting-dictionaries-by-value-in-python-
24/
operator itemgetter
http://mundogeek.net/archivos/2008/04/02/python-entrada-salida-ficheros/
entrada salida de archivos
http://www.gulic.org/almacen/httlaclwp/chap11.htm
formato de escritura textos, números y decimales
http://www.programacion.com/articulo/guia_de_aprendizaje_de_python_65/7
formatos de salida
http://numpy.sourceforge.net/numdoc/HTML/numdoc.htm#pgfId-57315
muy importante sobre arrays,etc.
http://www.hjcb.nl/python/Arrays.html
muy importante sobre arrays,etc.
http://www.alecjacobson.com/weblog/?p=1570
cargar un txt como una matriz en python
http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
getfromtxt de numpy.
http://www.alegsaonline.com/art/13.php
http://www.um.es/docencia/barzana/IAGP/Iagp3.html
http://web.usal.es/~dhernand/software.htm#Geotop
http://mail.python.org/pipermail/tutor/2008-March/060886.html
From future import division.
100
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
http://www.youtube.com/watch?v=I6GMIQBD6EU
youtube diccionarios
http://mundogeek.net/archivos/2008/01/21/python-tipos-basicos-ii-colecciones/
diccionarios
http://staff.not.iac.es/~rcardenes/hg/diveintopython3-es/native-datatypes.html
diccionarios
http://www.estrellateyarde.org/discover/manual-python-lo-mas-basico
diccionarios
http://es.wikibooks.org/wiki/Inmersi%C3%B3n_en_Python/Tipos_de_datos_nativos/Pr
esentaci%C3%B3n_de_los_diccionarios
diccionarios.
http://docs.python.org.ar/tutorial/datastructures.html#diccionarios
python estructura de diccionarios
http://www.wikilearning.com/tutorial/introduccion_informal_a_matlab_y_octave-
matrices_y_algebra_lineal_i/19256-8
concatenar matrices
http://www.slideshare.net/santiagosilas/computao-cientfica-com-numpy-e-scipy-
7797060
detalles de numpy, vectores, matrices,etc.
http://www.scipy.org/NumPy_for_Matlab_Users#head-
e9a492daa18afcd86e84e07cd2824a9b1b651935
muy importante de scipy arrays y matrices…
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
muy importante de scipy arrays y matrices…
http://pyspanishdoc.sourceforge.net/tut/
traducción del tutorial de Guido.
http://www.scipy.org/Numpy_Example_List_With_Doc#head-
5202db3259f69441c695ab0efc0cdf45341829fc
http://pyspanishdoc.sourceforge.net/lib/module-pickle.html
función pickle
101
DESARROLLO DE HERRAMIENTAS EN PYTHON PARA CÁLCULOS GEODÉSICOS Y
TOPOGRÁFICOS
Máster en Geotecnologías Cartográficas en Ingeniería y Arquitectura
http://nicocesar.com/?q=node/23
carga de ficheros binarios.
http://staff.not.iac.es/~rcardenes/hg/diveintopython3-es/files.html
apertura, cierre, carga de ficheros, etc.
http://pythonr2.wordpress.com/2008/08/29/leer-archivos-binarios-en-python/
lectura de ficheros binarios.
http://www.ign.es/ign/layoutIn/herramientas.do
descarga de ficheros regilla del I.G.N.
http://terrasit.gva.es/es/kb/transformacion-coordenadas-utm-ed50-utm-etrs89-
utilizando-libreria-proj4
página de la gva sobre cambio de sistema y fichero rejilla.
http://docs.python.org/library/struct.html
módulo struct de python para lectura de ficheros binarios.
http://www.slideshare.net/jpadillaa/programacion-orientada-a-objetos-en-python
programación orientada a objetos con python.
http://pyspanishdoc.sourceforge.net/tut/node7.html
recorrer diccionarios
http://www.ikeralbeniz.net/2010/12/15/conversion-de-ed50-a-wgs84-o-etrs89/
interesante, aplicación fichero rejilla ntv2 en python
102