[postgis-users] Problems with making own shape dumper
Дорофеев А.В.
Megadrofan at yandex.ru
Thu Jun 14 13:34:23 PDT 2007
Hello everybody :) I`m trying to make ArcGis connector to PostGIS
with multiuser editing ability.The main idea that PostGis layer is
dumped into shapefile and i handle all changes made by user and when user
saves edits I overwrite(or delete/create) features that has been changed at
this edits session by current user. All is amostly perfect but I`ve met
some serious problems with dumper. At first I wanted to create own
but I met issue with ASTEXT() function that returned a broken string in some
multipolygons. I can`t understand where is a bug .ASTEXT(the_geom) returned
normal string. But when I`m trying to set this value to some field or
dump it into some variable ,the string became broken.
The dicussion of this bug
http://postgis.refractions.net/bugs/bug.php?op=show&bugid=151
Then I decided to use standart pgsql2shp to dump shapefile, but i`ve noticed
strange percularity that the size of text fields equal to max sizeof values
in this field so if where is no values in the field it`s size is 1. I decided
to fix this and recompile pgsql2shp. I found changed string field size
here(in pgsql2shp.c)
//str 772
if ( (type == 1042 || type == 1043) && mod != -1 )
{
size = mod-4; /* 4 is header size */
}
else
{
size = getMaxFieldSize(conn, schema,
table, fname);
if ( size == -1 ) return 0;
if ( ! size ) size = 32;
/* might 0 be a good size ? */
}
}
if ( size > MAX_DBF_FIELD_SIZE )
{
fprintf(stderr, "Warning: values of field '%s' "
"exceeding maximum dbf field width (%d) "
"will be truncated.\n",
fname, MAX_DBF_FIELD_SIZE);
size = MAX_DBF_FIELD_SIZE;
}
/*printf( "FIELD_NAME: %s, SIZE: %d\n", field_name, size); */
/* generic type (use string representation) */
if(DBFAddField(dbf, field_name, FTString, size, 0) == -1) --here i changed
size to 255
{
fprintf(stderr, "Error - String field could not "
"be created.\n");
return 0;
}
//str 807
but nothing changed.Fields size=max size of is value
Dear Users and Developers I want to ask You
"What am I doing wrong in pgsql2shp?"
"What is the reason of ASTEXT() function issue? and what to do to fix it?"
"Is there any method to get feature coords without ASTEXT() function?"
More information about the postgis-users
mailing list