[postgis-devel] Re: [postgis-users] postgis+zaurus 5500
strk
strk at keybit.net
Sat Jul 3 04:40:38 PDT 2004
On Fri, Jul 02, 2004 at 05:59:20PM -0300, Jonathan Giorgio Ghellere wrote:
> Hi,
>
> I set BIG and LITTLE_ENDIAN and in both cases the problem persists.
Where did you set them ?
You should try setting under line 111 of postgis.h
Around there there is an inclusion of sys/param.h which
has been found as needed for w32 systems.
I do not know about availability of the 'endian.h' include,
but including that would do the trick. As you can see
sys/param.h is included *only* for w32, if you can provide
a similar define for your system we can do the same thing.
--strk;
>
> In the BIG_ENDIAN, postgis return a XDR, and the select was a NDR..... a
> little crazy.
>
> # select oid,asbinary(geom,'NDR') as qgs_feature_geometry from gtest where
> geom && GeometryFromText('BOX3D( 1.529391 2.750000, 7.
> 470609 8.250000)'::box3d,-1);
>
> oid |
> qgs_feature_geometry
> -------+----------------------------------------------------------------------
> ------------------------------------------------------------------------------
> 19203 |
> 010000000200000004000000004000000000000000400800000000000040100000000000004014
> 00000000000040180000000000004014000000000000401C00000000000040200000
> (1 row)
>
> but is swapped too.
>
> this is the endian.h of zaurus:
>
> --------------------------cut---------------------
> #ifndef _ENDIAN_H
> #define _ENDIAN_H 1
>
> #include <features.h>
> /* Definitions for byte order, according to significance of bytes,
> from low addresses to high addresses. The value is what you get by
> putting '4' in the most significant byte, '3' in the second most
> significant byte, '2' in the second least significant byte, and '1'
> in the least significant byte, and then writing down one digit for
> each byte, starting with the byte at the lowest address at the left,
> and proceeding to the byte with the highest address at the right. */
>
> #define __LITTLE_ENDIAN 1234
> #define __BIG_ENDIAN 4321
> #define __PDP_ENDIAN 3412
>
> /* This file defines `__BYTE_ORDER' for the particular machine. */
> #include <bits/endian.h>
>
> /* Some machines may need to use a different endianness for floating point
> values. */
> #ifndef __FLOAT_WORD_ORDER
> # define __FLOAT_WORD_ORDER __BYTE_ORDER
> #endif
>
> #ifdef __USE_BSD
> # define LITTLE_ENDIAN __LITTLE_ENDIAN
> # define BIG_ENDIAN __BIG_ENDIAN
> # define PDP_ENDIAN __PDP_ENDIAN
> # define BYTE_ORDER __BYTE_ORDER
> #endif
>
> #if __BYTE_ORDER == __LITTLE_ENDIAN
> # define __LONG_LONG_PAIR(HI, LO) LO, HI
> #elif __BYTE_ORDER == __BIG_ENDIAN
> # define __LONG_LONG_PAIR(HI, LO) HI, LO
> #endif
>
> #endif /* endian.h */
> -------------------------- /cut------------------
>
> any idea ?
>
> tks
>
> On Fri, 2 Jul 2004 17:06:31 +0200, strk wrote
> > It seems postgis is not able to correctly detect BYTE_ORDER
> > on zaurus. Please check BYTE_ORDER and the like defines
> > in postgis_fn.c. Also try to find out where does your system
> > define that (if it does) or a architectur specific header defined
> > that could be handled for the specific case.
> > --strk;
> >
> > On Fri, Jul 02, 2004 at 11:44:42AM -0300, Jonathan Giorgio Ghellere wrote:
> > > Hello,
> > >
> > > I've compiled postgresql+postgis+proj for a zaurus 5500 running openzaurus
> 3.
> > > 3.5 and used qgis in a x86 machine to connect to the database in the
> zaurus.
> > > The database was created using the http://postgis.refractions.
> net/docs/c206.
> > > html:
> > >
> > > CREATE TABLE gtest ( ID int4, NAME varchar(20) );
> > > SELECT AddGeometryColumn('dbname','gtest','geom',-1,'LINESTRING',2);
> > > INSERT INTO gtest (ID, NAME, GEOM) VALUES (1, 'First Geometry',
> > > GeometryFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1));
> > >
> > > Everything goes ok, but, when I use QGIS (http://qgis.org), to retrieve a
> > > feature map it returns a blank screen. So, I debug QGIS in order to see
> how it
> > > was selecting map and got something like this:
> > >
> > > select oid,asbinary(geom,'NDR') as qgs_feature_geometry from gtest where
> geom
> > > && GeometryFromText('BOX3D( 1.529391 2.750000, 7.
> 470609
> > > 8.250000)'::box3d,-1);
> > >
> > > In psql that query line returns:
> > >
> > > oid |
> > > qgs_feature_geometry
> > >
> -------+----------------------------------------------------------------------
> > >
> ------------------------------------------------------------------------------
> > > 21265 |
> > >
> 010200000004000000000000400000000000000840000000000000104000000000000014400000
> > > 00000000184000000000000014400000000000001C40000000000000204000000000
> > > (1 row)
> > >
> > > Ok, this line did not show much, but take a look in the same query in a
> x86
> > > machine:
> > >
> > > oid |
> > > qgs_feature_geometry
> > >
> -------+----------------------------------------------------------------------
> > >
> ------------------------------------------------------------------------------
> > > 19203 |
> > >
> 000200000004000000000000000000004000000000000008400000000000001040000000000000
> > > 1440000000000000184000000000000014400000000000001C400000000000002040
> > > (1 row)
> > >
> > > It looks like the bytes are swapped. Do anybody knows why it's happening ?
> > >
> > > tks for the help.
> > >
> > > --
> > > Jonathan Giorgio Ghellere
> > > http://www.ecosconsult.com.br
> > > EcosConsult Planejamento Ltda
> > >
> > >
> > > _________________________
> > > Linux - uvscan antivirus
> > > _______________________________________________
> > > postgis-users mailing list
> > > postgis-users at postgis.refractions.net
> > > http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
> --
> http://www.ecosconsult.com.br
> EcosConsult Planejamento Ltda
>
>
> _________________________
> Linux - uvscan antivirus
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-devel
mailing list