microsoft / satclip

PyTorch implementation of SatCLIP
MIT License
190 stars 19 forks source link

[Question] Coordinate Reference System #4

Closed jejjohnson closed 2 months ago

jejjohnson commented 4 months ago

Hi,

I was taking a look at the code base and I had a question about the coordinate reference system (CRS) of the original satellite data. As I understand, the Sentinel-2 data has its original CRS and I imagine the lat-lon coordinates are on a curvilinear grid. Are you all doing some sort of interpolation to a rectilinear or regular grid in your preprocessing? Or do you keep everything in its original projection?

I see immense benefits to keeping it in its original projection because one could potentially lose a lot of information going back and forth between grids with different interpolators, e.g. Curvilinear -> Rectilinear -> Train NN -> Curvilinear. In addition, it definitely makes sense to avoid this because your architecture features a position encoder for the coordinates. However, I just wanted to check to make sure I am understanding all of the preprocessing involved beforehand.

Thanks!

calebrob6 commented 4 months ago

Hello @jejjohnson,

Yep -- we keep all imagery patches in their default UTM coordinate system (i.e. we don't reproject or resample to EPSG:4326 or EPSG:3857). SatCLIP does expect lat,lon coordinates in EPSG:4326 as input though.

Does that answer your question?

Best, Caleb

jejjohnson commented 4 months ago

Hi,

Thank you for your response. That does answer my question. Perfect! I now understand what you did.

Regarding the UTM coordinate system, im not an expert but it's a "local coordinate system" which depends on where the data is located. Im guessing the data is distributed in such a way that each file has its local coordinate system. Right?

Emmanuel

calebrob6 commented 3 months ago

Yes, there are 60 different UTM zones, so the coordinate system of a file will depend on its locations. (https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system is helpful in understanding this!)