Refactor geometry.Polygon
Closed this issue · 1 comments
cleder commented
A Polygon is expressed in KML as:
<Polygon id="ID">
<!-- specific to Polygon -->
<extrude>0</extrude> <!-- boolean -->
<tessellate>0</tessellate> <!-- boolean -->
<altitudeMode>clampToGround</altitudeMode>
<!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
<!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates> <!-- lon,lat[,alt] -->
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates> <!-- lon,lat[,alt] -->
</LinearRing>
</innerBoundaryIs>
</Polygon>
Normalize fastkml.geometry.Polygon
to take parameters shell and holes:
class Polygon(_Geometry):
def __init__(
self,
*,
ns: Optional[str] = None,
name_spaces: Optional[Dict[str, str]] = None,
id: Optional[str] = None,
target_id: Optional[str] = None,
extrude: Optional[bool] = None,
tessellate: Optional[bool] = None,
altitude_mode: Optional[AltitudeMode] = None,
shell: Optional[Shell] = None,
holes: Iterable[Holes] = None,
geometry: geo.Polygon,
) -> None:
Shell
should be a BaseObject
, or XMLObject
which takes a fastkml.geometry.LinearRing
as kml_geometry parameter
Holes
should be a BaseObject
, or XMLObject
which takes an Iterable[fastkml.geometry.LinearRing]
as kml_geometry parameter
Tag name to be overwritten for Shell
as
@classmethod
def get_tag_name(cls) -> str:
return 'outerBoundaryIs'
and similar for Holes
Then it should be possible to use the registry and remove the custom etree_element
and _get_geometry
methods.