Saturday, 1 February 2020

python - Polygons across international dateline [-180..+180 longitude]


I'm trying to generate polygons for satellite orbital swaths. So far I have a method to generate two lines which represent the edge of each swath in [lat,long]. Some of the swath's cross the international dateline and so wrap round:


swath wrap around


I was able to solve this with ogr2ogr -wrapdateline:


ogr2ogr -wrapdateline  -f "ESRI Shapefile" test.shp orbits.shp


Which does split the lines probably


I now want to be able to generate polygons on the interior of both lines. So for example in the case where one edge of the swath crosses the dateline a polygon fills in when it emerges on the other side, like:


fill


I need a method that is automated as I need to repeat the task a lot. Preferably in python as that's how i have generated the lines. Here are the two shapefiles containing the lines: wraparound ; datelinefixed



Answer



You can build a custom mercator projection centered approximately on the center of the swath. For example, use for swath 25:


+proj=merc +lon_0=-140 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

In this projection, the swath is not broken by the dateline. You can create the polygon from the line.



enter image description here


Then create a cut polygon between -179.95°E and 179.95°E in EPSG:4326:


Nr;WKT
1;POLYGON ((-179.95 89, 179.95 89, 179.95 -89, -179.95 -89, -179.95 89))

Reproject it to your custom CRS too, and subtract it from the swath polygon.


After reprojecting back to EPSG:4326, the swath is correctly divided by the dateline:


enter image description here


Continue with all swaths that cross the dateline.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...