[Shapelib] Adding new shape to shapefile
Christian Kirchhoff
ckirchho at directmedia.de
Fri Jun 13 09:35:58 EDT 2008
My guess is still:
- the path and filename you provide is checked by the various create
functions.
- there seems to be a problem when the path leads to the SD card, thus
both the path and the filename default to an empty string.
- so the path is empty, which - as a relative path - simply means: "in
the current directory". And the current directory might be the system
root. Thus the files are created there
- cause the filename is empty, too, the filename plus the endings
".dbf", ".shp" etc. are simply: ".dbf", ".shp". Maybe the dot before as
a first character is not allowed and thus truncated or your file viewer
(whichever you use) automatically hides the dot.
Just a guess....
Best regards,
Christian
*Directmedia Publishing GmbH* · Möckernstraße 68 · 10965 Berlin
www.digitale-bibliothek.de
AG Berlin-Charlottenburg · HR B 58002 · USt.Id. DE173211737
Geschäftsführer: Ralf Szymanski · Erwin Jurschitza
thecrashteam schrieb:
> Hi,
>
> I have something new. Like you said Bram, my files are created but they are
> not created in the specified folder. They are created on the system root.
> But there is something weird. I want to create test.shp, test.shx and
> test.dbf files but files which are created are named "dbf", "shp" and "shx".
> They have no extension. Moreover, when I add an extension to my dbf file, in
> order to view its content, I have a string which does not match with the one
> I want to put in (I put "to" and it contains " þ").
> Even if I want to create my files in another folder (created on the system
> root for example) they are created on the system root...
> can you tell me if this is normal?
>
> Romain
>
>
> Bram de Greve wrote:
>
>> OK, this is _really_ weird, as _all_ return values indicate that every
>> single call was successful.
>>
>> DBFCreate and SHPCreate return values different than zero, meaning they
>> were actually able to create files and return handles to them.
>> DBFAddField return the field number and -1 on failure. 0 just means
>> this is the first field successfully added.
>> DBFWriteStringAttribute returns true on success, 1 is true.
>> SHPCreateSimpleObject returns a handle to an object which is non-zero,
>> and thus a success.
>> SHPWriteObject returns the index of the object within the file. 0 just
>> means this is the first object, and thus a success.
>>
>> So, from everything I can see here, a file _must_ have been created
>> somewhere, as none of these calls (except SHPCreateSimpleObject ) could
>> have been successful if this wasn't the case. As far I as understand
>> shapelib, there is no other way possible.
>>
>> I can imagine only two things:
>> - the filename is doing something funny. Please, try simpler cases.
>> - the C# layer is doing something funny. Who has created the C#
>> library? Maybe he/her can help you better ...
>>
>> Bram
>>
>> thecrashteam wrote:
>>
>>> Thank you for your help Bram, it is very nice !
>>> So, I did a list of return values of functions used in my code :
>>> DBFCreate returns 375328,
>>> SHPCreate = 379776,
>>> DBFAddField = 0,
>>> DBFWriteStringAttribute = 1,
>>> SHPCreateSimpleObject = 410704,
>>> SHPWriteObject = 0.
>>>
>>> I hope you could tell me what these figures mean... And do you know where
>>> could I find documentation about shapelib ?
>>>
>>> Thank you again for your help
>>>
>>> Romain.
>>>
>>>
>>>
>>> Bram de Greve wrote:
>>>
>>>
>>>> The extension has nothing to do with it. At worst, it would create
>>>> something like test.shp.shp.
>>>>
>>>> As no files AT ALL are created, the problem probably is within DBFCreate
>>>> and SHPCreate, as they should create file files straight away, even
>>>> without the data being added. Please, check the return values of
>>>> DBFCreate and SHPCreate. Are they null? Probably they are, and that
>>>> means the creation of the files simply fail. And thus everything else
>>>> fails too.
>>>>
>>>> Try a more simple filename like just "test".
>>>>
>>>> Are you prepared to step through the code in a debug session. Maybe you
>>>> can figure out what exactly fails ...
>>>>
>>>> Good luck =)
>>>> Bram
>>>>
>>>> thecrashteam schreef:
>>>>
>>>>
>>>>> Hi Vassilis,
>>>>>
>>>>>
>>>>> I tried what you told me too, but it still not work. No error, but no
>>>>> files... It's hopeless !! ^^
>>>>> I think there is something wrong against me with this library !!!
>>>>>
>>>>> Thank you for your reply !
>>>>>
>>>>> Romain
>>>>>
>>>>> My code :
>>>>>
>>>>> //création du dbf
>>>>> IntPtr ptrDBFCreate =
>>>>> shpFile.DBFCreate(@"\SD-MMCard\TestParcelle\test");
>>>>>
>>>>> //création du shapefile
>>>>> IntPtr ptrSHPCreate =
>>>>> shpFile.SHPCreate(@"\SD-MMCard\TestParcelle\test",
>>>>> ShapeFile.ShapeFile.ShapeType.Point);
>>>>>
>>>>> //nouvelle colonne dans le dbf
>>>>> shpFile.DBFAddField(ptrDBFCreate, @"\SD-MMCard\TestParcelle\test",
>>>>> ShapeFile.ShapeFile.DBFFieldType.FTString, 255, 0);
>>>>>
>>>>> //écriture de la valeur liée au futur shape
>>>>> shpFile.DBFWriteStringAttribute(ptrDBFCreate,
>>>>> shpFile.DBFGetRecordCount(ptrDBFCreate), 0, "to");
>>>>>
>>>>> //création du point
>>>>> double[] x = new double[1];
>>>>> double[] y = new double[1];
>>>>> double[] z = new double[1];
>>>>> x[0] = 803606;
>>>>> y[0] = 803606;
>>>>> z[0] = 0;
>>>>>
>>>>> IntPtr psObject =
>>>>> shpFile.SHPCreateSimpleObject(ShapeFile.ShapeFile.ShapeType.Point, 1,
>>>>> x,
>>>>> y,
>>>>> z);
>>>>>
>>>>> //écriture du point dans le shape
>>>>> shpFile.SHPWriteObject(ptrSHPCreate, -1, psObject);
>>>>>
>>>>> //fermeture du dbf et du shapefile
>>>>> shpFile.SHPClose(ptrSHPCreate);
>>>>> shpFile.DBFClose(ptrDBFCreate);
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Shapelib mailing list
>>>> Shapelib at lists.maptools.org
>>>> http://lists.maptools.org/mailman/listinfo/shapelib
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>> _______________________________________________
>> Shapelib mailing list
>> Shapelib at lists.maptools.org
>> http://lists.maptools.org/mailman/listinfo/shapelib
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/shapelib/attachments/20080613/ec1a9239/attachment.html
More information about the Shapelib
mailing list