camaraproject / Commonalities

Repository to describe, develop, document and test the common guidelines and assets for CAMARA APIs
Apache License 2.0
12 stars 25 forks source link

Add an “Area” data-type into CAMARA_common.yaml #242

Open tlohmar opened 3 months ago

tlohmar commented 3 months ago

Problem description

Multiple APIs are using a similar data type (a profiled variant) for describing an Area, which allows a description of a service area or geographical area in form of a circle and/or a polygon.

Note, a similar ‘Area’ definition is also available in 3GPP (TS 29.572). There are some differences, like the data type is named GeographicArea or the PointList is a list of GeographicalCoordinates (no Points).

Expected action

PedroDiez commented 2 months ago

@jlurien FYI for any consideration. Issue is going to be enhanced with more info.

tlohmar commented 2 months ago

When creating an Area Data-Type in CAMARA_common.yaml, the following modifications/ extensions should be discussed

chinaunicomyangfan commented 2 months ago

@tlohmar I support the idea. In fact, when defining areas in RegionDeviceCount and NetworkSliceBooking, we referred to the definition of area in DeviceLocation due to the lack of a common definition. If 3GPP has a complete definition standard, I believe it is reasonable to follow 3GPP's definition to create a common definition for area.

gregory1g commented 2 months ago

having a consistent representation of the same area is a good idea. From the PopulationDensity API group point of view the important criteria we must secure are: 1) every API can decide which type of areas it supports. For example, an API can support only circles or only polygons or both. 2) the structure representation must stay simple (afaik, this was one of the reasons why people did not take TS 29.572 "as is")

Besides this, there are two other issues which one need to decide: a. Should Camara API on the global level introduce limitations like 15 vertexes for a polygon? Why exactly 15 and why all APIs must follow it for input and output? b. Renaming (like Point -> GeographicalCoordinates) is a not backward compatible change, therefore it should better be agreed and adapted by all APIs before September meta release.

PS: regarding renaming suggested in the comment

Rename the Point Data-Type to GeographicalCoordinate (see 3GPP LMF Location)

TS 29.572 uses GeographicalCoordinateS (plural)

tanjadegroot commented 2 months ago

Another source of inspiration for the data type could be objects defined by The GeoJSON Specification (RFC 7946). See:

bigludo7 commented 1 week ago

Completely aligned on having a consistent representation across our API.

Now about the value itself I'm bit more mixed.

Could worth to have some discussion about keep it standard (and which standard?) vs keep simple.

jlurien commented 1 week ago

Our model in DeviceLocation is almost the same as 3GPP LMF Location API (TS29.572), but with different names. 3GPP PointUncertaintyCircle (point + uncertainty) is equivalent to our Circle (center + radius), and Polygon is also an array of coordinates delimiting the boundary (pointList vs boundary), both with length 3-15 (we copied the limit from them).

GeoJson uses a more complex, and I would say less intuitive, model. Polygons for example are defined as an array of arrays of arrays, allowing the definition of polygons with holes. And Circles are not explicitly specified AFAIK.

It would be good to include the common schemas in the common artifact and find some way to reference them from the specs. e.g. "$ref": "CAMARA_common.yaml#/components/schemas/XXX"