Problema con Postgres +postGIS conexion.

Topics: General Topics
Aug 25, 2014 at 8:37 PM
using System;
using System.Data;
using System.Data.Odbc;// conectar con posTGIS
using System.Drawing;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Subgurim.Controles;//google maps
using Subgurim.Controles.GoogleChartIconMaker; //Iconos
using System.Collections.Generic;
using BruTile;//
using SharpMap;
using SharpMap.Data;
using SharpMap.Layers;
using BruTile.Web;
using NetTopologySuite.IO;
using Npgsql;
using SharpMap.Data.Providers;
//using PostgreSql.Data.PgTypes;
//using PostgreSql.Data.PostgreSqlClient;
using SharpMap.Converters.WellKnownBinary;
using SharpMap.Geometries;
using GeoAPI.Geometries;
using NetTopologySuite;

private SharpMap.Map InicializarMapa(System.Drawing.Size outputsize)
{
 SharpMap.Map mapa = new SharpMap.Map(outputsize);
Connection = "Server=localhost;Port=5433;UserId=postgres;Password=*****;Database=postgis_21_sample";
    string tablename = "provincia";
    string idColumn = "gid";
    string geomCol = "geom";
SharpMap.Layers.VectorLayer MisProvincias = new SharpMap.Layers.VectorLayer("Provincias");
MisProvincias.DataSource = new SharpMap.Data.Providers.ShapeFile(Server.MapPath(@"~\App_data\Provincias\Provincias.shp"), true);
MisProvincias.DataSource = SharpMap.Data.Providers.PostGIS( Connection, tablename, geomCol, idColumn);
    MisProvincias.Style.Fill = new SolidBrush(Color.Beige);      
    MisProvincias.Style.Outline = System.Drawing.Pens.Black;
    Color c = Color.FromArgb(30, 100, 100, 100);
    Brush b = new SolidBrush(c);
    MisProvincias.Style.Fill = b;
    MisProvincias.Style.Outline = new Pen(Color.Black, 2);
    MisProvincias.Style.EnableOutline = true;        
    mapa.Layers.Add(MisProvincias);
    return mapa;    
}
intente agregarlo desde un .shp en mi proyecto y funsiona perfectamente pero tratando de cargarlo con posgrest no me funsiona este es el error:

No se puede convertir implícitamente el tipo 'SharpMap.Data.Providers.PostGIS' en 'SharpMap.Data.Providers.IProvider'. Ya existe una conversión explícita (compruebe si le falta una conversión)

La clase base o la interfaz 'SharpMap.Data.Providers.BaseProvider' del ensamblado 'SharpMap, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null' a la que hace referencia el tipo 'SharpMap.Data.Providers.PostGIS' no se ha podido resolver

ya no se que hacer si alguien me puede ayudar.....
Coordinator
Aug 26, 2014 at 6:24 AM
I assume the versions of SharpMap and SharpMap.Extensions you are using don't match.
Aug 26, 2014 at 3:20 PM
Hola si me sirvio de mucho el consejo tenía las versiones de SharpMap 0,9,0,0 y SharpMapExtension 1,1,0,0; y por eso me daba tanto problema ya puse las dos en 1,1,0,0 y funcionan bien pero...

Me surgio otro problema cuando usaba 0,9,0,0 tenía la siguiente linea de codigo para centrar mi capa:
   MiMapa.Center = (SharpMap.Geometries.Point)ViewState["mapCenter"];
pero ahora ya esto no sirve.

intente hacer esto pero no me muestra nada en el mapa:
using Point = GeoAPI.Geometries.Coordinate;

MiMapa.Center = (Point)ViewState["mapCenter"];
Coordinator
Aug 26, 2014 at 6:08 PM
MiMapa.Center = (GeoAPI.Geometries.Coordinate)ViewState["mapCenter"];
Aug 26, 2014 at 6:50 PM
thanks I have some other fault that I can not display the layer on the screen.
this is my code.
 private SharpMap.Map MiMapa;
 public string data_Connection = "Server=localhost; Port=5433;Database=postgis_21_sample;User Id=postgres;Password=******;";
 public string tablename = "provincia";
 public string idColumn = "gid";
 public string geomCol = "geom";

protected void Page_Load(object sender, EventArgs e)
{
    MiMapa = InicializarMapa(new System.Drawing.Size((int)imgMap.Width.Value, (int)imgMap.Height.Value));
    if (Page.IsPostBack)
    {   
        MiMapa.Center = (GeoAPI.Geometries.Coordinate)ViewState["mapCenter"];
        MiMapa.Zoom = (double)ViewState["mapZoom"];       
    }
    else
    {           
        MiMapa.ZoomToExtents();
        ViewState.Add("mapCenter", MiMapa.Center);
        ViewState.Add("mapZoom", MiMapa.Zoom);               
        CreateMap();                                       
    }
}

private SharpMap.Map InicializarMapa(System.Drawing.Size outputsize)
{
    SharpMap.Map mapa = new SharpMap.Map(outputsize);       
    SharpMap.Layers.VectorLayer provincias = new SharpMap.Layers.VectorLayer("provincia");
    provincias.DataSource = new SharpMap.Data.Providers.PostGIS(data_Connection, tablename, geomCol, idColumn);            
    Color c = Color.FromArgb(30, 100, 100, 100);
    Brush b = new SolidBrush(c);
    provincias.Style.Fill = b;
    provincias.Style.Outline = new Pen(Color.Black, 2);
    provincias.Style.EnableOutline = true;      
    mapa.Layers.Add(provincias);   
    return mapa;
}


protected void imgMap_Click(object sender, ImageClickEventArgs e)
{      
    MiMapa.Center = SharpMap.Utilities.Transform.MapToWorld(new System.Drawing.Point(e.X, e.Y), MiMapa);
    if (rblMapTools.SelectedValue == "0") //Zoom in
        MiMapa.Zoom = MiMapa.Zoom * 0.5;
    else if (rblMapTools.SelectedValue == "1") //Zoom out
        MiMapa.Zoom = MiMapa.Zoom * 2;      
    ViewState.Add("mapCenter", MiMapa.Center);
    ViewState.Add("mapZoom", MiMapa.Zoom);
    CreateMap();
}

private void CreateMap()
{
    System.Drawing.Image imagen = MiMapa.GetMap();
    string imgID = SharpMap.Web.Caching.InsertIntoCache(1, imagen);
    imgMap.ImageUrl = "getmap.aspx?ID=" + HttpUtility.UrlEncode(imgID);
}

could be missing something; and I have not put this in the code.

references are good and well put versions but I do not get the image of my polygon layer
Coordinator
Aug 26, 2014 at 9:36 PM
Do you get an error or just a blank image?
Perhaps this thread has the missing link to your problem.
Aug 26, 2014 at 9:51 PM
I get a blank image I think not show me anything but no error

the viewfinder is blank with a small image in the center shaped small icon. but this does nothing
Aug 26, 2014 at 10:03 PM
code in my webConfig

<?xml version="1.0"?>
<!-- http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration>
<system.web>
<httpRuntime maxRequestLength="65536"/>    
<compilation debug="true"/>
</system.web>
<system.webServer>
<handlers>
  <add name="GetMap.aspx"
   preCondition="integratedMode"
   verb="*" path="GetMap.aspx" type="SharpMap.Web.Handler,SharpMap"
   />
</handlers>
</system.webServer>
</configuration>

click image

Error de servidor en la aplicación '/'.
No se puede cargar el tipo 'SharpMap.Web.Handler' del ensamblado'SharpMap'.

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.TypeLoadException: No se puede cargar el tipo 'SharpMap.Web.Handler' del ensamblado'SharpMap'.

Error de código fuente:

Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

Seguimiento de la pila:


[TypeLoadException: No se puede cargar el tipo 'SharpMap.Web.Handler' del ensamblado'SharpMap'.]
System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0
System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +70
System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +39
System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +37
System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +65
System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type) +38
System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type) +13
System.Web.Configuration.HandlerFactoryCache..ctor(String type) +19
System.Web.HttpApplication.GetFactory(String type) +86
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +262
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Coordinator
Aug 26, 2014 at 10:20 PM
  <httpHandlers>
    <add name="GetMapHandler" verb="*" path="GetMap.aspx" type="SharpMap.Web.HttpHandler, SharpMap.Web, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null"/>
   </httpHandlers>
It is SharpMap.Web.HttpHandler. If you are using the precompiled binaries, you might need the version information, too.
Aug 27, 2014 at 2:14 PM
Thanks and I worked and I are reading the shape from postGIS but I had to use code like this:


 <handlers>
      <add name="GetMapHandler" verb="*" path="GetMap.aspx" type="SharpMap.Web.HttpHandler, SharpMap.Web, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null"/>
    </handlers>
for some reason if I put this

<httpHandlers>
<add name="GetMapHandler" verb="*" path="GetMap.aspx" type="SharpMap.Web.HttpHandler, SharpMap.Web, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null"/>
</httpHandlers>

gives me an error but at least with IIS and charge me the code thank you very much

HTTP Error 500.19 - Error interno del servidor
No se puede obtener acceso a la página solicitada porque los datos de configuración relacionados de la página no son válidos.

Información de error detallada:
Módulo IIS Web Core
Notificación Desconocido
Controlador No determinado aún
Código de error 0X8007000D
Error de configuración
Archivo de configuración ? \ \ C: \ Users \ ******** \ Documents \ Visual Studio 2013 \ Projects \ Proyecto \ web.config
Dirección URL solicitada http: // localhost: 57371 / Visor.aspx
Ruta de acceso física
Método de inicio de sesión No determinado aún
Usuario de inicio de sesión No determinado aún
Directorio de seguimiento de solicitudes C: \ Users ************\ Doc