[ms4w-users] Problem with OGR connection for XY point layer

Gaston Izaguirre gizagui at fi.uba.ar
Mon Feb 5 20:35:57 EST 2007


Hi all,

I'm using MS4W 1.5.5 on WinXP SP2 (mapserver 4.8.4, PHP 4.4.3, 
php_mapscript_48.dll, GDAL to 1.3.2).
I'm trying to connect to a SQL server 2000 through an OGR Virtual Format 
driver to obtain X,Y coordinates plus other ancillary data from a View that 
I defined in the database. The data base is updated constantly with new 
coordinates, so the number of rows can change, actually there are about 20 
points.

The syntax of my .OVF file is:

<OGRVRTDataSource>
    <OGRVRTLayer name="puntos">
        <SrcDataSource>ODBC:mi_usuario/mi_password at mi_DSN,mi_vista_de_la_bd</SrcDataSource>
        <SrcLayer>mi_vista_de_la_bd</SrcLayer>
        <!--  <FID>Poul_id</FID>  -->
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <!--  <LayerSRS>EPSG:4326</LayerSRS>  -->
        <GeometryField encoding="PointFromColumns" x="Poul_longitud" 
y="Poul_latitud"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

I´ve tested with OGRINFO and the result is something like the following:

Layer name: puntos
OGRFeature(puntos):0
  Vehi_textid (String) = 276 33
  Poul_id (Integer) = 73
  Poul_vehi_id (Integer) = 9
  Poul_latitud (Real) = -34
  Poul_longitud (Real) = -58
  Poul_velocidad (Real) = 0
  Poul_sentido (String) = 0
  Poul_posi_fecha (String) = 31/01/2007 12:18:46
  POINT (-58 -34 0)

OGRFeature(puntos):1
  Vehi_textid (String) = 276 58
  Poul_id (Integer) = 63
  Poul_vehi_id (Integer) = 9
  Poul_latitud (Real) = -34
  Poul_longitud (Real) = -58
  Poul_velocidad (Real) = 0
  Poul_sentido (String) = 0
  Poul_posi_fecha (String) = 05/02/2007 17:44:02
  POINT (-58 -34 0)
...
...
...
...
OGRFeature(puntos):19
  Vehi_textid (String) = 276 59
  Poul_id (Integer) = 64
  Poul_vehi_id (Integer) = 9
  Poul_latitud (Real) = -34
  Poul_longitud (Real) = -58
  Poul_velocidad (Real) = 12
  Poul_sentido (String) = 170
  Poul_posi_fecha (String) = 05/02/2007 22:09:35
  POINT (-58 -34 0)


As you can see, the connection retrieves the 20 points, but there is a 
problem with the X/Y (lat/lon) values: they are rounded to the integer part, 
in spite of being defined as real in the database. For example, for the last 
point (#19) I get:
xcoord = -58
ycoord = -34
when the actual value is:
x = -58.904272
y = -34.447837

As a result of this, when I test the mapfile with SHP2IMG all 20 points are 
in the same place (all with the same coordinate values; e.g. x,y = -58,-34)

I am making some mistake?
My syntax is correct?
Is there someone to give me a hand on this problem?

Thanks in advance,

Gaston.





More information about the ms4w-users mailing list