Hello!

I’ve been trying to use the OGRLayer::GetFeatureCount() when I am reading 
another format inside the ICreateFeature() but I think it’s impossible. At this 
point I don’t have access to the layer info, so to the GetFeatureCount().
In fact I don’t mind where to call this function but I need to call it in order 
to write our format efficiently (at least in most of cases).

So the question is, in my driver, when I read a format I get some information 
about the layer but I can’t acces to the count of the features of the layer. I 
am right? If not, how I do that?

Thanks but before sending this mail I’ve been like hours trying to find it out 
debbuging and consulting the call stack from all points and nothing seems to 
indicate I can do that. But perhaps I am wrong.

It would be very helpful knowing that information. I not my writting strategy 
with change radically. Thankssssss!

De: gdal-dev <gdal-dev-boun...@lists.osgeo.org> En nombre de Abel Pau
Enviado el: divendres, 7 de juliol de 2023 12:44
Para: Even Rouault <even.roua...@spatialys.com>; gdal-dev@lists.osgeo.org
Asunto: Re: [gdal-dev] A question of eficiency

Hi again,

I can totally give this number in GetFeatureCount(). No problem from my driver 
to other.
Then I understand that in one way (efficient) or in another (no efficient) I 
can always get the number of features with the GetFeatureCount(). True?

About the other question imagine a multiline shape with two lines of two parts 
every line. I need to know the total count of individual lines (cause my driver 
doesn’t have multiline and I have to convert every multiline to N lines). It is 
4 (2+2). Can I get this number without asking every feature how many parts it 
have? I doubt that, but...

Thanks for your kind anwser!

De: Even Rouault <even.roua...@spatialys.com<mailto:even.roua...@spatialys.com>>
Enviado el: divendres, 7 de juliol de 2023 12:32
Para: Abel Pau <a....@creaf.uab.cat<mailto:a....@creaf.uab.cat>>; 
gdal-dev@lists.osgeo.org<mailto:gdal-dev@lists.osgeo.org>
Asunto: Re: [gdal-dev] A question of eficiency


Abel,

At the minimum for the reading side of a vector driver, you need to implement 
GetNextFeature().

If there is an efficient way of knowing the number of features without 
iterating over the whole file (typically a field in a header giving that 
number), you may implement GetFeatureCount(). If you don't implement it, and 
code using your driver needs the feature count, the generic implementation of 
OGRLayer::GetFeatureCount() will call GetNextFeature() repeatdly until it 
returns NULL.

Not totally sure to understand your question about multielements. If you have 
an instance of OGRGeometryCollection or any deriving class, there's a 
getNumGeometries() method to get the number of parts

Even
Le 07/07/2023 à 11:33, Abel Pau a écrit :
Hi,
I would like to know if when we use the code of GDAL to program a driver (or 
whatever) in vectors (so, ogr) we can assume that we can know the number of 
elements we are going to import in any way or it would be possible not knowing 
that until NextFeature is empty (or something like that). So, there is any way 
to obtain this number of elements without doing a while? And in case of 
multielements its possible to know how many parts are there in total?
I need that to write my format (I don’t explain the details cause I don’t get 
you bored :) )

If anyone know that I’d appreciate an answer. Thanks in advance.

Abel.


_______________________________________________

gdal-dev mailing list

gdal-dev@lists.osgeo.org<mailto:gdal-dev@lists.osgeo.org>

https://lists.osgeo.org/mailman/listinfo/gdal-dev

--

http://www.spatialys.com

My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to