Buscar este blog

miércoles, 22 de octubre de 2008

COMANDO ABRIR ARCMAP DESDE .NET

Con este comando lo que haremos es abrir el arcMap con una plantilla predeterminada con un solo click en un botón de .NET


Shell("C:\Archivos de programa\ArcGIS\Bin\ArcMap.exe " & "D:\mxd\prueba.mxd") Carlos Javier Martín Cano

KOSMO

Kosmo es la primera Plataforma SIG Libre Corporativa, distribuida bajo licencia GNU/GPL.

SAIG SL. Kosmo, un Sistema de Información Geográfica -SIG- de escritorio de funcionalidades avanzadas, y que es el primer componente de una serie de desarrollos que están en marcha y que, a partir de ahora, irán siendo puestos a disposición de toda la comunidad.Kosmo ha sido implementado usando el lenguaje de programación Java y está desarrollado a partir de la plataforma JUMP y de una serie larga serie de bibliotecas de código libre de reconocido prestigio y empleadas en multitud de proyectos de software libre, entre las que destacan Geotools y JTS. Está disponible para los sistemas operativos Windows y Linux.
Se trata de una herramienta capaz de visualizar y procesar datos espaciales, que se caracteriza por poseer una interfaz de usuario amigable, tener la capacidad de acceder a múltiples formatos de datos, tanto vectoriales (en fichero, como Shapefile o DXF, o en base de datos, como PostgreSQL, MySQL u Oracle), como ráster (TIFF, ECW, MrSID u otros formatos de imagen georreferenciados, como BMP, GIF, JPG, PNG), con capacidad de edición y, en general, ofreciendo numerosas utilidades al usuario SIG.
Una de sus características principales es la posibilidad de ampliar su funcionalidad en base a extensiones.
Kosmo ha sido desarrollado por la empresa SAIG S.L. (Sistemas Abiertos de Información Geográfica, S.L.) y está distribuido bajo la licencia GNU_GPL.Está aún en desarrollo y, aunque según sus creadores contiene ya una importante cantidad de recursos y funciones básicas y avanzadas, aún le faltan otras no menos importantes. A pesar de ello, hemos considerado que su estado actual es suficientemente maduro como para darlo a conocer.De esta forma esperamos, por un lado, que sea una herramienta de ayuda y útil para gran cantidad de usuarios y, por otro, empezar a recoger ya en esta fase de gestación avanzada todos aquellos comentarios, sugerencias, etc. que, a buen seguro, redundarán en una aun mayor adaptabilidad a las necesidades de los usuarios.Más información, descargas, etc:Web: http://www.saig.esLista de usuarios: http://lists.saig.es/mailman/listinfo/kosmo- Se trata de la liberación de un cliente SIG de escritorio de funcionalidades avanzadas, y que no es mas que el primer componente de una serie de desarrollos que tenemos en marcha y que, a partir de ahora, esperamos ir dando a conocer a toda la comunidad.- Tenemos abiertas colaboraciones y esperamos intensificarlas próximamente con el ámbito universitario como una fuente inapreciable de enriquecimiento, aunque no se trata de un proyecto académico.- Hay numerosos trabajos para distintas administraciones basados en Kosmo, aunque ninguno de ellos lo financia.- Se trata de un proyecto de Software Libre empresarial.- Los componentes e impulsores principales de este proyecto hemos estado dirigiendo y desarrollando grandes proyectos directamente relacionados con los Sistemas de Información Geográfica, tanto con software comercial como con software libre, en ambos casos desde hace más de una década.- Es tal la confianza que tenemos en la viabilidad del Software Libre y, más concretamente, en este proyecto, que la mayoría de nosotros hemos emprendido este nuevo camino, y no solo con una nueva apuesta profesional y personal, sino, además, apostando fuertemente y poniendo en él todos los recursos financieros necesarios para su correcto desarrollo.- Si no estamos en un error, creemos que se trata, si no de la primera, de una de las primeras veces que, desde una empresa privada, se hace una apuesta tan clara y decidida, y se desarrolla con recursos íntegramente propios un Sistema Abierto de Información Geográfica destinado desde su concepción a ser liberado a la comunidad.- Tanto su continuidad en el tiempo como su continua evolución está garantizada, ya que son numerosos los proyectos que están en marcha con Kosmo como núcleo básico, tanto para diversas administraciones como para importantes empresas de utilities y del ámbito de la cartografía. Además, confiamos en que, de la misma forma en que nosotros llevamos años enriqueciéndonos profesionalmente de la comunidad de software libre, y lo seguimos haciendo al día de hoy, nuestro trabajo sea considerado suficientemente interesante por la comunidad, y consigamos su apoyo para, entre todos, hacer crecer aun más este proyecto, en beneficio de la comunidad.- Ésta es una de las razones por las que nuestro proyecto no se ha realizado desde cero con software propio que podría (o no) ser mejor que otros: nos basamos en proyectos que han tenido y tienen un fuerte impacto y seguimiento internacional en la comunidad de desarrollo de SIG libre: JUMP, Geotools, JTS, etc.- Aprovechamos todo lo que podemos; modificamos lo que creemos necesario para mejorar su funcionamiento; corregimos los errores que detectamos; desarrollamos mucho software propio para funcionalidades que no están disponibles; desarrollamos mucho software propio para integrar y compatibilizar todos los componentes que hay dispersos e integrarlos en un proyecto compacto y estable.Noticia edidtada por Nosolosig.

He trasteado ultimamente con este programa y la verdad que me ha sorprendido bastante, para bien claro, no espera tanto la verdad.


Carlos Javier Martín Cano

martes, 21 de octubre de 2008

III Jornadas de SIG Libre en Girona, Marzo 2009

Nos es grato anunciar la edición de las III Jornadas de SIG Libre que van a tener lugar en Girona los días 11, 12 y 13 de Marzo de 2009. Toda la información disponible, así como el programa de Ponentes invitados y Talleres prácticos puede consultarse en el sitio web de las Jornadas [1].


[1] http://www.sigte.udg.es/jornadassiglibre[2] http://www.sigte.udg.es/jornadassiglibre/index.php?page=inscripcion[3] http://www.sigte.udg.es/jornadassiglibre/index.php?page=comunicaciones Carlos Javier Martín Cano

viernes, 17 de octubre de 2008

La información geográfica llega a los cajeros de Caja Madrid

Caja Madrid ha desarrollado, sobre la tecnología de ESRI y en colaboración con el integrador USM Endecar, una solución que permite a la entidad disponer de información georeferenciada de sus oficinas y cajeros
En el marco de su Plan 2010, que engloba un total de 179 proyectos, Caja Madrid, una de las principales entidades bancarias de España, tiene el punto de mira puesto en la esfera del cliente y, concretamente, en su alineación con las esfera tecnológica y de capacidades avanzadas. Con ese objetivo, la entidad financiera viene dando pasos significativos en distintos frentes, incluyendo la incorporación de nuevas funcionalidades de valor añadido en su red de puestos de autoservicio.
Entre los proyectos desarrollados en ese ámbito, destaca el desarrollo de una nueva aplicación que ha permitido que los clientes de Caja Madrid puedan acceder a información ‘georeferenciada’ de los más de 4.000 cajeros desde estos mismos terminales o través de su portal en Internet. El nuevo servicio, que ha sido desarrollado por la caja en colaboración con el integrador USM Endecar sobre la tecnología de ESRI, es fruto de la inquietud de Caja Madrid por “disponer de una solución que permitiera facilitar a los clientes información precisa y actualizada de la ubicación de los cajeros, así como del mejor itinerario para llegar hasta ellos, especialmente en caso de indisponibilidad operativa en algunos de éstos”, indica el director del Área de Planificación Tecnológica de la Unidad de Sistemas y Operaciones de Caja Madrid, Ignacio Guinea.
Caja Madrid no partía de cero a la hora de afrontar este nuevo reto puesto que ya disponía del sistema GASPER de NCR, que permite a la caja el conocimiento al detalle y en tiempo real de la situación de sus cajeros en cuanto al estado de sus componentes y comunicaciones, disponibilidad de efectivo, etc. Esta solución, en integración con la nueva aplicación, ha permitido el desarrollo de nuevos servicios de valor añadido para los clientes. “No sólo se trata de evitar que se produzcan incidencias que, por supuesto, es nuestro objetivo; sino también de poner a disposición de los clientes una operativa alternativa que solucione su necesidad en caso de incidencia”, comenta Guinea insistiendo en el alcance de esta iniciativa a la hora de trasladar tranquilidad al cliente. “Si un determinado cajero no está operativo, proporcionamos al cliente un gráfico con la ubicación del cajero más próximo disponible o si el cajero se ha tragado su tarjeta, por supuesto que la recuperaremos tan pronto como sea posible, pero por el momento le facilitamos un código con el que puede conseguir un mínimo de efectivo en el cajero más próximo operativo”, indica.
En la misma idea insiste el director del Departamento de Autoservicio de la Unidad de Organización y Sistemas de Caja Madrid, Emilio Bolea, según el cual “conocer en tiempo real la ubicación precisa de las oficinas y los cajeros, así como el estado operativo de éstos, nos está permitiendo mejorar la información que ofrecemos a nuestros clientes a través del canal de autoservicio”.
Con ese objetivo y después de una fase inicial de toma de datos y diagnóstico de la situación, Caja Madrid seleccionó a través del desarrollo en 2005 de un proyecto piloto la tecnología de ESRI España y, como integrador, a la empresa USM Endecar partner histórico de ESRI. La iniciativa exigió, en primera instancia, un proceso de geocodificación, es decir, la ubicación geográfica en los mapas de los cajeros a partir de BBDD internas de Caja Madrid. Posteriormente, se desplegaron las soluciones ESRI ArcSED y ArcISM 9.0, para el almacenamiento de los datos geográficos y la presentación de servicios de mapas y routing, respectivamente. El sistema se completó con un el software para el cálculo de rutas de la empresa Magellan Ingenierie, el acceso a la base cartográfica de Tele Atlas y el desarrollo de servicios web que, invocados por el front-end de autoservicio de Caja Madrid, tienen como propósito la localización, el cálculo de distancias entre los distintos cajeros y la determinación de la ruta más idónea.
A lo largo del año 2006, Caja Madrid llevó a cabo la primera fase de implementación, que se completó en el primer trimestre de 2007 con una inversión asociada de en torno a 250.000 euros. El nuevo sistema reside en máquinas de Sun Microsystems corriendo Solaris 9 con Oracle 10g como BBDD y Bea WebLogic 8.1 como servidor de aplicaciones. Actualmente, la provisión de esta valiosa información se realiza a través del portal de Caja Madrid en Internet y de su red de cajeros; si bien el proyecto contempla la futura incorporación de nuevos canales, como el móvil.


http://www.nosolosig.com/noticias_tecnologias_de_la_informacion_geografica/noticias_tecnologias_de_la_informacion_geografica/la_informacion_geografica_llega_a_los_cajeros_de_caja_madrid.html Carlos Javier Martín Cano

NOTICIAS : "GeoPad": Nueva herramienta para el campo de la Educación

fuente de la noticia: http://www.idasnet.com/idas_site/idasnet_esp/noticias/noticias_2.htm

ANN ARBOR, Mich. — Cuaderno, "rock hammer", compás, tablero sujetapapeles, mapas topográficos y fotografías aéreas — estos son las herramientas que generaciones de estudiantes de geología han usado para aprender la ciencia y perfeccionar sus habilidades de mapeo y observación en el campoAhora adicionar "GeoPad", una aplicación informática móvil desarrollada en la Universidad de Michigan para realzar la educación de campo.Combinando los recientemente disponibles computadores "TabletPC" diseñados para soportar condiciones al aire libre, integrado con receptores de "Global Positioning Satellite (GPS)", conjuntos de datos digitales, software de "Geographic Information System (GIS)" y de visualización en tres dimensiones ("3D"), el "GeoPad" le permite a los estudiantes registrar, manipular, integrar y ver sus observaciones y trazar datos en formas que nunca fueron posibles con los métodos tradicionales basados en papel."Con el GeoPad, estamos haciendo el equivalente digital de eso, pero con mejores y más completas habilidades para manipular la información y las imágenes." Por ejemplo, los estudiantes pueden rotar los mapas para obtener diferentes vistas y cambiar de representaciones en 2-D a 3-D de lo que están mirando en el mundo real.Eso es una gran ventaja que ayuda a los estudiantes a comprender como un mapa en 2-D corresponde al paisaje en 3-D, una habilidad que muchos encuentran difícil de dominar, dijo Ben van der Pluijm, profesor de la Universidad de Michigan en "geological sciences". Los estudiantes también pueden incorporar otra información del área, como características del suelo, patrones de vegetación o datos de utilización de la tierra. "Proporcionando más información de la que pudimos darles en el campo en el pasado, estamos agregando perceptiblemente a la experiencia de aprendizaje más que apenas substituir la vieja manera de hacer las cosas," dijo van der Pluijm.
Para mayor información:http://spatialnews.geocomm.com/dailynews/2003/dec/04/news5.html

Crear una ruta. NetworkAnalist

Con esta funcion conseguiremos crear dado una serie de puntos que cargamos,una ruta.

Dim indice As Integer
Dim nomb As String
Dim arrLineas As New Hashtable
Dim pLayer As ESRI.ArcGIS.Carto.ILayer
Dim sNombreLayer As String
Dim listaLayersAEliminar As New ArrayList
Dim arrPuntosDatagr As Windows.Forms.DataGridViewRowCollection = datagrid.Rows

Try
Dim networkDataset As ESRI.ArcGIS.Geodatabase.INetworkDataset = Me.OBTENERNetworkAnalist() ' coger la network de la bd y cargarla en arcMap
Dim imxDoc As ESRI.ArcGIS.ArcMapUI.IMxDocument
imxDoc = m_Application.Document
Dim pNetworkLayer As ESRI.ArcGIS.Carto.INetworkLayer
pNetworkLayer = New ESRI.ArcGIS.Carto.NetworkLayer
pNetworkLayer.NetworkDataset = networkDataset
imxDoc.AddLayer(pNetworkLayer)

Dim numRutas As Integer
numRutas = Get_PuntosRutas.Count
Dim It As IDictionaryEnumerator
It = Get_PuntosRutas.GetEnumerator()
indice = 1
Dim arrPuntos As ArrayList
While It.MoveNext
Dim arrPoint As ArrayList
If It.Key <> m2_sector Then
arrPoint = It.Value
Else

arrPuntos = New ArrayList


Dim j As Integer
For j = 0 To arrPuntosDatagr.Count - 1
Dim fila As Windows.Forms.DataGridViewRow
fila = arrPuntosDatagr(j)
arrPuntos.Add(fila)
Next

End If
If m_sector = "" Then
nomb = It.Key
Else
nomb = It.Key
End If

Dim naLayer As ESRI.ArcGIS.NetworkAnalyst.INALayer = CreateRouteAnalysisLayer(m_sector, networkDataset)
Dim naContext As ESRI.ArcGIS.NetworkAnalyst.INAContext = naLayer.Context
Dim stopsNAClass As ESRI.ArcGIS.NetworkAnalyst.INAClass = naContext.NAClasses.ItemByName("Stops")
Dim routesFC As ESRI.ArcGIS.Geodatabase.IFeatureClass = naContext.NAClasses.ItemByName("Routes")


Dim pFcGis As ESRI.ArcGIS.Geodatabase.IFeatureClass
pFcGis = Me.GetControlConexion.ObtenerFeatureClass(General.Configuracion.getConfigurador.tablaGISplanific)
Dim naLoader As ESRI.ArcGIS.NetworkAnalyst.INAClassLoader = New ESRI.ArcGIS.NetworkAnalyst.NAClassLoaderClass()
naLoader.Locator = naContext.Locator
naLoader.NAClass = stopsNAClass


Dim rowsInCursor As Integer = 0
Dim rowsLocated As Integer = 0
Dim pInputCursor As ESRI.ArcGIS.Geodatabase.ICursor
Dim pQuery As ESRI.ArcGIS.Geodatabase.IQueryFilter


Dim i As Integer
i = 0
im codCliente As String
Dim fila2 As Windows.Forms.DataGridViewRow
Dim pFeat As IFeature
Dim pfcClass As IFeatureClass
Dim pQuery2 As IQueryFilter
Dim pCursor2 As ICursor
While i <= arrPuntos.Count - 1
fila2 = arrPuntos(i)
If Not fila2.Cells("ObjectID").Value Is Nothing Then

pfcClass = ObtenerFeatureClass(featureclass)
pQuery2 = New QueryFilter
codCliente = fila2.Cells("Código Cliente").Value
pQuery2.WhereClause = General.Configuracion.getConfigurador.cli_cod & " = " & codCliente & " AND " & General.Configuracion.getConfigurador.rta_cod & "='" & fila2.Cells("Ruta").Value & "' AND " & General.Configuracion.getConfigurador.cli6_dia & "=" & fila2.Cells("Dia").Value
'hay que meter punto a punto.
pInputCursor = pfcClass.Search(pQuery2, False)
naLoader.Load(pInputCursor, New ESRI.ArcGIS.Carto.TrackCancel, rowsInCursor, rowsLocated)
End If
Me.liberaRecurso(pQuery2)
Me.liberaRecurso(pfcClass)
i = i + 1
End While

'Solve
Dim pGPMessages As ESRI.ArcGIS.Geodatabase.IGPMessages
pGPMessages = New ESRI.ArcGIS.Geodatabase.GPMessages
Dim naSolver As ESRI.ArcGIS.NetworkAnalyst.INASolver = naContext.Solver
naSolver.Solve(naContext, pGPMessages, Nothing)
Dim result As ESRI.ArcGIS.NetworkAnalyst.INAResult = CType(naContext.Result, ESRI.ArcGIS.NetworkAnalyst.INAResult)
Dim fcr As ESRI.ArcGIS.Geodatabase.IFeatureClass
fcr = result.NAContext.NAClasses.Item(1)
Dim pfeatt As ESRI.ArcGIS.Geodatabase.IFeature
Dim pCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor
pCursor = fcr.Search(Nothing, False)
pfeatt = pCursor.NextFeature
arrLineas.Add(It.Key, pfeatt)
imxDoc.AddLayer(naLayer)
indice = indice + 1
End While
Return arrLineas
Catch ex As Exception

Throw ex
End Try
End Function

jueves, 16 de octubre de 2008

Expresiones regulares, cogemos prefijo,via y numero

Ajunto aqui una pequeña función que tiene como objetivo el separar de una cadena "calle turia,21" el prefijo,nombre y numero de dicha dirección.


Dim calle As String
Dim nombreCalle As String = "([^\d\-,])+"
Dim numeroPortal As String = "(\d+$)"
Dim numero As String
Dim pref As String
Dim direccion As String = "calle turia,25"
Try
'prefijo
Dim ERR As New System.Text.RegularExpressions.Regex("^((CALLE)(C(\ ))(C/(\ ))(C/\.)(CL(\ ))(CL\.)(PLAZA(\ ))(PLAÇA(\ ))(PL(\ ))(PL.)(PLZ(\ ))(PLZ\.)(PZA(\ ))(PZA.)(PZ(\ ))(PZ\.)(PLZA.)(PLZA(\ ))(AVENIDA(\ ))(AVDA\.)(AVDA(\ ))(AVD(\ ))(AVD\.)(AV\.)(AV(\ ))(CARRETERA(\ ))(CRTRA(\ ))(CRTRA\.)(CTRA\.)(CTRA\.(\ ))(CTRA(\ ))(CTR\.)(CTR(\ ))(TRAVESIA(\ ))(TRAV\.)(TRAV(\ ))(EL(\ ))(LA(\ ))(LOS(\ ))(LAS(\ ))(GLORIETA(\ ))(PASEO(\ ))(CAMINO(\ ))(AUTOPISTA(\ ))(PUENTE(\ ))(PG\.(\ ))(RBLA\.(\ ))(URB\.(\ ))(BL\.(\ ))(BLOQ(\ ))(POL\.(\ ))(POL(\ ))(RDA\.(\ ))(SECTOR(\ )))", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.CultureInvariant)
Dim prefijo As System.Text.RegularExpressions.Match = ERR.Match(Trim(direccion))
pref = prefijo.Value
direccion = ERR.Replace(Trim(direccion), "")
'segunda calle
Dim ERSeparador As New System.Text.RegularExpressions.Regex(nombreCalle, System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.CultureInvariant)
'primera calle
Dim primeraCalle As System.Text.RegularExpressions.Match = ERSeparador.Match(direccion)
calle = primeraCalle.Value
calle = calle.TrimEnd
calle = calle.TrimStart
Dim ERSeparador2 As New System.Text.RegularExpressions.Regex(numeroPortal)
'primer portal
Dim primerport As System.Text.RegularExpressions.Match = ERSeparador2.Match(direccion)
numero = primerport.Value
numero = numero.TrimEnd
If numero = "" Then
numero = "0"
End If
Dim ERSeparador3 As New System.Text.RegularExpressions.Regex(numeroFinal)

viernes, 4 de abril de 2008

Acceder al ultimo registro de una Tabla. ARCOBJECTS

Con esto obtendremos el maximo valor del campo OBJECTID,
con lo que ya solo tendremos que pillar de la tabla el row con el id obtenido.


Dim idata As New DataStatistics
idata.Field = "OBJECTID"
idata.Cursor = pCursor
Dim vOIDMAXIMO As Double
vOIDMAXIMO = idata.Statistics.Maximum
'While Not pRow Is Nothing
' If pRow.Value(pRow.Table.FindField("OBJECTID")) > ultimoValor Then
' ultimoValor = pRow.Value(pRow.Table.FindField("OBJECTID"))
' End If
' pRow = pCursor.NextRow
'End While
row = ptable.GetRow(vOIDMAXIMO)

lunes, 31 de marzo de 2008

Conexion a ArcSDE

'Funcion para conectarse a sde
Public Function conectaMetamodelo() As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace
Dim pConfig As Configuracion
Dim pPropSet As IPropertySet
Dim pWksFact As IWorkspaceFactory
Dim pFWks As IFeatureWorkspace
Try
pConfig = Configuracion.getConfigurador
pPropSet = New PropertySet
With pPropSet
.SetProperty("SERVER", pConfig.rutaServidor)
.SetProperty("INSTANCE", pConfig.rutaInstancia)
'.SetProperty("DATABASE", pConfig.PathDatabase)
'.SetProperty("USER", "********")
'.SetProperty("PASSWORD", "******")
.SetProperty("USER", pConfig.rutaUser)
.SetProperty("PASSWORD", pConfig.rutaPassw)
.SetProperty("VERSION", pConfig.rutaVersion)
End With
pWksFact = New SdeWorkspaceFactory
pFWks = pWksFact.Open(pPropSet, 0)

Return pFWks
Catch ex As Exception
Throw ex
End Try
End Function