hello Bang:

Geoserver WCS maybe use Geotools component library rather than GDAL library.

It can generate the different result because of resample interpolation
method,precision,etc.

I think you can use GDAL in Java Programming.And this way is controllable
and custom by yourself.


Jody Garnett <jody.garn...@gmail.com> 于2023年4月6日周四 09:46写道:

> Good idea checking with GeoTools, sadly I should step asside and someone
> more experienced then me answer your questions about WCS.
>
> Still if you are comfortable with GeoTools you may wish to step through
> the GetCoverage operation in a debugger to see how it is coming up with the
> final grid.
>
> The whole thing really seems like off by one assumptions. Between
> different grid coverage models. Does the actual WCS standard provide
> anything that can help?
>
> Jody
>
> On Tue, Apr 4, 2023 at 1:05 AM Pham Huu Bang <a09...@gmail.com> wrote:
>
>> Hello Jody,
>>
>> I even tested with GeoTools v29-snapshot with this code below and it
>> returned size 18 x 5 instead of 17 x 3 for gdal_translate or 17 x 4 for
>> geoserver WCS GetCoverage.
>> I thought using geotools should yield the same result as geoserver WCS
>> GetCoverage, but it is not.
>> Do you have any suggestions for the code before?
>>
>>         File file = new File("/home/aaa/Downloads/temp/test.tif");
>>
>>         Hints hint = new Hints();
>>         hint.put(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM, WGS84);
>>         hint.put(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
>>
>>         GeoTiffReader reader = new GeoTiffReader(file, hint);
>>         GridCoverage2D coverage = reader.read(null);
>>
>>         CoverageProcessor processor = CoverageProcessor.getInstance();
>>
>>         final ParameterValueGroup param = 
>> processor.getOperation("CoverageCrop").getParameters();
>>
>>         // 137.915315044103 -36.51629558851893 154.64770004642423 
>> -40.081875882617666
>>         double minLong = 137.915315044103;
>>         double maxLong = 154.64770004642423;
>>         double minLat = -40.081875882617666;
>>         double maxLat = -36.51629558851893;
>>
>>         final GeneralEnvelope crop = new GeneralEnvelope(new 
>> GeographicBoundingBoxImpl(minLong, maxLong,
>>                 minLat, maxLat));
>>
>>         ReferencedEnvelope envelope = new ReferencedEnvelope(new 
>> Envelope(minLong, maxLong,
>>                 minLat, maxLat), WGS84);
>>
>>         param.parameter("Source").setValue(coverage);
>>         param.parameter("Envelope").setValue(envelope);
>>
>>         GridCoverage2D cropped = (GridCoverage2D) 
>> processor.doOperation(param);
>>
>>         GridCoverageFactory gcf = new GridCoverageFactory();
>>         GridCoverage2D gc = gcf.create("name", cropped.getRenderedImage(), 
>> cropped.getEnvelope());
>>         String url = "/tmp/geotools.tif";
>>         File outputFile = new File(url);
>>         GeoTiffWriter writer = new GeoTiffWriter(outputFile);
>>         writer.write(gc, null);
>>         writer.dispose();
>>
>>
>> gdalinfo /tmp/geotools.tif
>> Size is 18, 5
>>
>>
>>
>> On Mon, 3 Apr 2023 at 16:08, Jody Garnett <jody.garn...@gmail.com> wrote:
>>
>>> To our request defines the grid locations, you may have to read the
>>> standard to determine exactly how the grid is defined for your request.
>>> The standard is available on the OGC website.
>>>
>>> Thanks
>>>
>>> On Mon, Apr 3, 2023 at 7:00 AM Pham Huu Bang <a09...@gmail.com> wrote:
>>>
>>>> Hello Jody,
>>>>
>>>> >I find WCS tricky to use, did you use the WCS Request Builder to
>>>> produce your curl command?
>>>> No, I didn't use any tool for that. The parameters in curl command are
>>>> standard WCS 2.0.1 GetCoverage request.
>>>>
>>>> >One thing I could not determine from your curl example is what what
>>>> target coverage layout is being used (which is probably what your question
>>>> is about). I am not sure if WCS 2 allows you to specify that manually or
>>>> not.
>>>> I'm not sure about this either. I used only standard parameters request
>>>> for WCS GetCoverage.
>>>>
>>>> >Given your raster contains both shifted pixels and one additional row
>>>> than anticipated by gdal. This may be a difference between sampling at the
>>>> grid locations defined (WCS), rather that defining a grid of pixels and
>>>> sampling in the middle of each pixel defined (gdal)?
>>>> I'm not sure about this either. I used GeoServer normally to create a
>>>> data source as one TIFF file, then published it as a Layer and I didn't
>>>> define any grid locations.
>>>>
>>>> On Mon, 3 Apr 2023 at 15:56, Jody Garnett <jody.garn...@gmail.com>
>>>> wrote:
>>>>
>>>>> I find WCS tricky to use, did you use the WCS Request Builder to
>>>>> produce your curl command?
>>>>>
>>>>> One thing I could not determine from your curl example is what what
>>>>> target coverage layout is being used (which is probably what your question
>>>>> is about). I am not sure if WCS 2 allows you to specify that manually or
>>>>> not.
>>>>>
>>>>> Given your raster contains both shifted pixels and one additional row
>>>>> than anticipated by gdal. This may be a difference between sampling at the
>>>>> grid locations defined (WCS), rather that defining a grid of pixels and
>>>>> sampling in the middle of each pixel defined (gdal)?
>>>>>
>>>>> Jody
>>>>>
>>>>> On Mon, Apr 3, 2023 at 5:48 AM Pham Huu Bang <a09...@gmail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I've a hard time understanding which one should be the correct result
>>>>>> by gdal_translate or GeoServer.
>>>>>>
>>>>>> My system (Ubuntu 22.04) has:
>>>>>> - GDAL 3.4.1
>>>>>> - Geoserver 2.22 running on Tomcat on port 9090
>>>>>>
>>>>>> I have a small tiff file (link to download at the bottom of this
>>>>>> thread) in EPSG:4326, then I wanted to have a small subset on Lat and 
>>>>>> Long
>>>>>> axes from it by running:
>>>>>>
>>>>>> -  gdal_translate -projwin 137.915315044103 -36.51629558851893
>>>>>> 154.64770004642423 -40.081875882617666 test.tif gdal.tif
>>>>>>
>>>>>>
>>>>>> - curl '
>>>>>> http://localhost:9090/geoserver/wcs?service=WCS&version=2.0.1&request=GetCoverage&format=image/tiff&coverageId=test_raster:output&subset=Lat(-40.081875882617666,-36.51629558851893)&subset=Long(137.915315044103,154.64770004642423)'
>>>>>> -o geoserver.tiff
>>>>>>
>>>>>> - Then gdalinfo gdal.tif returns:
>>>>>>
>>>>>> Size is 17, 4
>>>>>>
>>>>>> and gdalinfo geoserver.tif returns
>>>>>>
>>>>>> Size is 17, 3
>>>>>>
>>>>>> - Also the geo bbox of gdal.tif and geoserver.tif are different.
>>>>>> First file gives:
>>>>>>
>>>>>> Upper Left  ( 136.9750000, -35.9750000)
>>>>>>
>>>>>> Second file gives:
>>>>>>
>>>>>> Upper Left  ( 137.9750000, -36.9750000)
>>>>>>
>>>>>>
>>>>>> More importantly, the pixels are shifted from gdal.tif at the top to
>>>>>> geoserver.tif at the bottom which you can see from this image:
>>>>>> https://imgur.com/a/L0vKvYk
>>>>>>
>>>>>> Here is the link to download test.tif, gdal.tif and geoserver.tif
>>>>>> https://drive.google.com/file/d/1dawCy38FMwx4J7OQsky-gAHHOXsMuDcy/view?usp=sharing
>>>>>>
>>>>>> Please share your opinion which result (gdal.tif or geoserver.tif)
>>>>>> should be correct?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> _______________________________________________
>>>>>> Geoserver-users mailing list
>>>>>>
>>>>>> Please make sure you read the following two resources before posting
>>>>>> to this list:
>>>>>> - Earning your support instead of buying it, but Ian Turton:
>>>>>> http://www.ianturton.com/talks/foss4g.html#/
>>>>>> - The GeoServer user list posting guidelines:
>>>>>> http://geoserver.org/comm/userlist-guidelines.html
>>>>>>
>>>>>> If you want to request a feature or an improvement, also see this:
>>>>>> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
>>>>>>
>>>>>>
>>>>>> Geoserver-users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>>>>>>
>>>>> --
>>>>> --
>>>>> Jody Garnett
>>>>>
>>>> --
>>> --
>>> Jody Garnett
>>>
>> --
> --
> Jody Garnett
> _______________________________________________
> Geoserver-users mailing list
>
> Please make sure you read the following two resources before posting to
> this list:
> - Earning your support instead of buying it, but Ian Turton:
> http://www.ianturton.com/talks/foss4g.html#/
> - The GeoServer user list posting guidelines:
> http://geoserver.org/comm/userlist-guidelines.html
>
> If you want to request a feature or an improvement, also see this:
> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
>
>
> Geoserver-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to