[gdal-dev] Java API: how to find dimensions of MDArray

Even Rouault even.rouault at spatialys.com
Sat Jun 3 09:03:16 PDT 2023


Le 03/06/2023 à 17:45, Barry DeZonia a écrit :
> Thanks Even.
>
> I might be able to find some time to do the SWIG work depending upon 
> the amount of development time needed. I am a long time developer with 
> experience in Java, C, and C++ (but have not used SWIG before). Is it 
> just a few signatures I need to write or do I need to write full 
> support for a GDALDimension class? Can you comment on this?

Yes this is "just" a few signatures to map a C array of (existing) 
GDALDimensionH objects to a vector of Java counterpart 
org.gdal.gdal.Dimension objects. The org.gdal.gdal.Dimension class 
already exists, with a "Dimension(long cPtr, boolean cMemoryOwn)" 
constructor taking the value of the underlying C pointer as a Java long. 
The cMemoryOwn boolean should probably be passed to true in that 
context, since the C GDALDimensionH objects need to be freed at the 
finalization of the Java Dimension object. This is really about glueing 
stuff, but that said writing SWIG typemaps is a whole adventure in 
itself... You may find relevant documentation at 
https://www.swig.org/Doc4.1/SWIGDocumentation.html#Java_typemaps .  The 
hint I gave for the existing closest typemap should hopefully put you on 
the right track, or at least as close as possible.

>
> Am I right in understanding that, as of the current Java 
> implementation, one really can't use MDArrays for much? Like if I 
> can't find the number of (... z planes, t steps, channels, etc.) of 
> data I will not be able to reconstruct the data?

Yes the multidim API is probably currently hardly usable outside C, C++ 
and Python due to the lack of a few critical typemaps for the other 
languages.

Even

>
> On Sat, Jun 3, 2023 at 6:09 AM Even Rouault 
> <even.rouault at spatialys.com> wrote:
>
>     Barry,
>
>     This method is indeed not available currently in the Java
>     bindings. It is only available currently in the Python bindings
>     (see
>     https://github.com/OSGeo/gdal/blob/master/swig/include/MultiDimensional.i#L159
>     ) , since it requires writing a specific SWIG typemap for each
>     binding language when a method returns (or takes as argument) a
>     new non-primitive type such as here, with an array of dimensions.
>     The closest existing Java typemap I found that can be used to take
>     inspiration from is
>     https://github.com/OSGeo/gdal/blob/master/swig/include/java/typemaps_java.i#L235
>     but there would be changes to call the "Dimension(long cPtr,
>     boolean cMemoryOwn)" constructor.  Whether you want to try to
>     tackle that yourself or not, you may create a ticket about that
>
>     Even
>
>     Le 03/06/2023 à 09:09, Barry DeZonia a écrit :
>>     On a related note is the Java api code in a public repo
>>     somewhere? It would be helpful to look at that code sometimes.
>>     (Like is GetDimensions() present in the Java code but not exposed
>>     as a public method?)
>>
>>     On Sat, Jun 3, 2023 at 12:18 AM Barry DeZonia
>>     <bdezonia at gmail.com> wrote:
>>
>>         Hi all,
>>
>>         I have access to an MDArray. I am trying to find its
>>         dimensions. In the C++ API I can see that GDALMDArray has a
>>         method called GetDimensions() to find the info I need. But I
>>         am programming in Java and the Java API does not show such a
>>         call for MDArray. Is there some way in Java to find the info
>>         I need?
>>
>>
>>     _______________________________________________
>>     gdal-dev mailing list
>>     gdal-dev at lists.osgeo.org
>>     https://lists.osgeo.org/mailman/listinfo/gdal-dev
>
>     -- 
>     http://www.spatialys.com
>     My software is free, but my time generally not.
>
-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20230603/f249c572/attachment-0001.htm>


More information about the gdal-dev mailing list