wmo-im / bufr2geojson Goto Github PK
View Code? Open in Web Editor NEWPython package to transform WMO BUFR data into GeoJSON
License: Apache License 2.0
Python package to transform WMO BUFR data into GeoJSON
License: Apache License 2.0
When a BUFR files contains multiple BUFR messages only the first message is extracted. All messages should be extracted.
The output of bufr2geojson refers to an invalid URL: http://www.wmo.int/spec/om-profile-1/1.0/req/geojson
The right place for such definitions and schemas is schemas.wmo.int, def.wmo.int or possibly wis.wmo.int
www.wmo.int is reserved for the wmo website and not for management of technical artifacts
We should avoid creating dead links, we already have enough of them.
Create documentation using Python Sphinx (following exmaple in https://github.com/wmo-im/csv2bufr/tree/main/docs), deploying to Read the Docs.
Sample output below. Items to consider:
observation
property name the CF name/long name (i.e. #1#airTemperature
-> air_temperature
)?"properties": {
"air_temperature.°C": 15.55,
"dew_point_temperature.°C": 13.65,
...
}
The strong typing provides broad interop (imagine CSV download of the properties).
{
"id": "WIGOS_0-454-2-AWSNAMITAMBO_20210707T145500",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
35.27,
-15.84,
806
]
},
"properties": {
"identifier": "WIGOS_0-454-2-AWSNAMITAMBO_20210707T145500",
"phenomenonTime": "2021-07-07T14:55:00+00:00",
"resultTime": "2022-02-15T16:54:03+00:00",
"wmo:wigos_station_identifier": "0-454-2-AWSNAMITAMBO",
"observations": {
"#1#nonCoordinatePressure": {
"value": 93284.05,
"cf_standard_name": "air_pressure",
"units": "Pa",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": 807,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#pressureReducedToMeanSeaLevel": {
"value": 102745.5,
"cf_standard_name": "pressure_at_mean_sea_level",
"units": "Pa",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": 807,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#3HourPressureChange": {
"value": null,
"longname": "change_of_air_pressure_over_past_3_hours",
"units": "Pa",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": 807,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#characteristicOfPressureTendency": {
"value": 4,
"longname": "characteristic_of_pressure_tendency",
"units": "CODE TABLE",
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#airTemperature": {
"value": 288.7,
"cf_standard_name": "air_temperature",
"units": "K",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#dewpointTemperature": {
"value": 286.8,
"cf_standard_name": "dew_point_temperature",
"units": "K",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#relativeHumidity": {
"value": 88,
"cf_standard_name": "relative_humidity",
"units": "%",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#totalSunshine": {
"value": 0,
"cf_standard_name": "duration_of_sunshine",
"units": "min",
"time_period": "-1 h",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#2#totalSunshine": {
"value": 0,
"cf_standard_name": "duration_of_sunshine",
"units": "min",
"time_period": "-24 h",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#totalPrecipitationOrTotalWaterEquivalent": {
"value": 0,
"cf_standard_name": "precipitation_amount",
"units": "kg m-2",
"time_period": "-1 h",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#maximumTemperatureAtHeightAndOverPeriodSpecified": {
"value": 289.5,
"cf_standard_name": "air_temperature",
"cell_methods": "maximum",
"units": "K",
"time_period1": "-24 h",
"time_period2": "0 h",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#minimumTemperatureAtHeightAndOverPeriodSpecified": {
"value": 269.4,
"cf_standard_name": "air_temperature",
"cell_methods": "minimum",
"units": "K",
"time_period1": "-24 h",
"time_period2": "0 h",
"sensor_height_above_local_ground": 1.5,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#windDirection": {
"value": 188,
"cf_standard_name": "wind_from_direction",
"units": "deg",
"cell_methods": 2,
"time_period": "-10 min",
"sensor_height_above_local_ground": 2,
"sensor_height_above_mean_sea_level": null,
"wind_sensor_type": 0,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#windSpeed": {
"value": 2.975,
"cf_standard_name": "wind_speed",
"units": "m/s",
"cell_methods": 2,
"time_period": "-10 min",
"sensor_height_above_local_ground": 2,
"sensor_height_above_mean_sea_level": null,
"wind_sensor_type": 0,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#maximumWindGustSpeed": {
"value": 7.16,
"cf_standard_name": "wind_speed",
"units": "m/s",
"cell_methods": null,
"time_period": null,
"sensor_height_above_local_ground": 2,
"sensor_height_above_mean_sea_level": null,
"wind_sensor_type": 0,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#1#globalSolarRadiationIntegratedOverPeriodSpecified": {
"value": 0.02758914,
"cf_standard_name": "surface_downwelling_shortwave_flux_in_air",
"units": "J m-2",
"cell_methods": "sum",
"time_period": "-1 h",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
},
"#2#globalSolarRadiationIntegratedOverPeriodSpecified": {
"value": 0.02758914,
"cf_standard_name": "surface_downwelling_shortwave_flux_in_air",
"units": "J m-2",
"cell_methods": "sum",
"time_period": "-24 h",
"sensor_height_above_local_ground": null,
"sensor_height_above_mean_sea_level": null,
"valid_min": null,
"valid_max": null,
"scale": null,
"offset": null
}
},
"id": "WIGOS_0-454-2-AWSNAMITAMBO_20210707T145500"
}
},
As a follow on to wmo-im/wis2box#132, we should make clear that the GeoJSON made available via bufr2geojson is in development and will change as specifications are developed at WMO and OGC.
For this file:
In this part of the bufr2geojson-code:
def get_time(self) -> str:
"""
Function to get time from qualifiers and to apply any displacements or
increments.
:returns: ISO 8601 formatted date/time string
"""
# class is always 04
xx = "04"
# get year
year = self.get_qualifier(xx, "year")
The value of year is [1991, 2020]
which causes the error: unsupported format string passed to list.__format__
when creating the string:
time_ = f"{year:04d}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}"
For easier / more efficient error tracking / debugging parameterize errors for standardized messages.
Dear Dave,
I got the below request can you please have a look:
Hi Maaike,
Would like to check if you are aware that the bufr2geojson is generating the wrong geometry latitude during the conversion from TEMP Bufr to GeoJSON.
Below are the WIS2 notification messages from South Korea and Singapore. Appreciate if you could share this finding with the developers of bufr2geojson.
{
"id": "c2489440-c493-11ee-a126-e43d1a214824",
"type": "Feature",
"version": "v04",
"geometry": {
"type": "Point",
"coordinates": [
18024.8491,
37.18551,
13.5
],
"type": "Point"
]
},
"properties": {
"data_id": "wis2/kr-kma/data/core/weather/surface-based-observations/temp/WIGOS_0-410-0-47230_20240206T014217",
"datetime": "2024-02-06T01:42:17Z",
"pubtime": "2024-02-06T02:01:58Z",
"integrity": {
"method": "sha512",
"value": "wFMCgNE8GrkZrj7C5R73xBjYkMcnTv3Y/KR28A9y06D63EqibS4miO/BmUVDSicm+sKXQTFd6GxlDcX1Yb9vZg=="
},
"wigos_station_identifier": "0-410-0-47230"
},
"links": [
{
"length": 66935,
"rel": "canonical",
"type": "application/x-bufr",
"rel": "canonical",
"href": "[https://gc.wis.cma.cn/20240206/cache/a/wis2/kr-kma/data/core/weather/surface-based-observations/temp/WIGOS_0-410-0-47230_20240206T014217.bufr4](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgc.wis.cma.cn%2F20240206%2Fcache%2Fa%2Fwis2%2Fkr-kma%2Fdata%2Fcore%2Fweather%2Fsurface-based-observations%2Ftemp%2FWIGOS_0-410-0-47230_20240206T014217.bufr4&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485420258%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=4ZVurRUjEvgUI4ouagDXog%2BN0oth6Z8zQWGiKDxF37w%3D&reserved=0)"
"href": "[https://opendata.dwd.de/test/wis2/cache/24h/kr-kma/WIGOS_0-410-0-47230_20240206T014217.bufr4](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fopendata.dwd.de%2Ftest%2Fwis2%2Fcache%2F24h%2Fkr-kma%2FWIGOS_0-410-0-47230_20240206T014217.bufr4&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485427827%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=WVKgrr%2Fc%2BSfu2A4qsN%2F8%2Bz%2FIRvehCFqklFhqBuYn8wI%3D&reserved=0)",
"length": 66935
},
{
"rel": "via",
"type": "text/html",
"rel": "via",
"href": "[https://wisdev.kishou.go.jp/data/wis2/kr-kma/data/core/weather/surface-based-observations/temp/WIGOS_0-410-0-47230_20240206T014217/0-410-0-47230](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwisdev.kishou.go.jp%2Fdata%2Fwis2%2Fkr-kma%2Fdata%2Fcore%2Fweather%2Fsurface-based-observations%2Ftemp%2FWIGOS_0-410-0-47230_20240206T014217%2F0-410-0-47230&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485436066%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=fd%2FncdRhT7VjuVdG7G3MKA1cv43A53rLsY7PG5%2F3vq4%3D&reserved=0)"
"href": "[https://oscar.wmo.int/surface/#/search/station/stationReportDetails/0-410-0-47230](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Foscar.wmo.int%2Fsurface%2F%23%2Fsearch%2Fstation%2FstationReportDetails%2F0-410-0-47230&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485443549%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=wN%2FkJ3NZ2XR34%2FpFwy0xASca5MK%2B0qoYjX72i7bAVqM%3D&reserved=0)"
}
],
"id": "5a93041d-ebf9-4603-91ab-c3d41afd6f09",
"properties": {
"datetime": "2024-02-06T01:42:17Z",
"integrity": {
"method": "sha512",
"value": "wFMCgNE8GrkZrj7C5R73xBjYkMcnTv3Y/KR28A9y06D63EqibS4miO/BmUVDSicm+sKXQTFd6GxlDcX1Yb9vZg=="
},
"data_id": "wis2/kr-kma/data/core/weather/surface-based-observations/temp/WIGOS_0-410-0-47230_20240206T014217",
"pubtime": "2024-02-06T02:01:58Z"
"_comment": {
"errors": [
"geometry latitude is not correct"
]
}
}
{
"id": "11dc7bee-ed5b-4dd3-9e21-8d6d53033f37",
"id": "2765260a-c48e-11ee-b853-e43d1a214824",
"version": "v04",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-9627.91511,
1.403,
33
]
},
"properties": {
"pubtime": "2024-02-06T01:21:50.092253000Z",
"datetime": "2024-02-06T01:06:55Z",
"integrity": {
"method": "sha256",
"value": "x6BiHEVRFr32scVmBQ8+p5U/h9v51eeHjBrs0Yvq9BQ="
},
"data_id": "origin/a/wis2/sg-mss/data/core/weather/surface-based-observations/temp/WIGOS_0-702-0-48698_20240206T000000-55875",
"metadata_id": "urn:x-wmo:md:sg-mss:upperair-weather-observations:temp"
},
"links": [
{
"href": "[https://wisdev.kishou.go.jp/data/origin/a/wis2/sg-mss/data/core/weather/surface-based-observations/temp/WIGOS_0-702-0-48698_20240206T000000-55875/IUSG01WSSS060000.bufr?AWSAccessKeyId=ASIAUAYRRGZCOKXMOEMV&Signature=5cFE%2F7U93%2B7q%2FyaJcfVp2QPMLO4%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEOn%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAOO4yPhKkTf16dtQQk0l3w5baQzX18f3bqEM8oapqVI0AiBbEis5gjC0%2FG0a1uiE4GXL3Z161K4hQ90FXPmf0lLAgCqrAwiy%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAEaDDI3NjUyNTI5OTI2OCIM7QxhnNI14vHSgzLZKv8Ctc2htkNIZs423RvOQ4Zzp%2FcK9pabbx5pDb526%2FCj7K7cgXSfE6iguilT2cjTt5jRLEd1CqRnxTEpTjecCjmBruFVZ4G9Khuh044joatxcip%2BOURLcAlxUWnCjS1Bmw1r01dDURdbC5JxVJaOre19dwjRPXOu%2BRD0aCpbXYEIQM0Ln9iE6wqbtudLY%2FDasF3i63xollETh7EzB7jmUTGIT2e2lo2g966yIAGJ%2FGppnhpZqspCot%2BV1BYW3SOswoDBvFQyDh1Ng%2FSOamwtasr6sAU%2FcwcCZAbU9%2BBP4b7ZtaW%2BZsMC6dS5hJBoheEHpBEl%2B6J8YUF8o58XbVKukbRwBEraRu7nnCPaQRFz%2BJnOE8hk%2Fkd503XdaWzlAcBmaeOaY83UuSAn8uMwbVSc6blu2mNB1AyGce90vH0P0Xfyro12Mcw5tI486Criqpqq3p7rFpG4vVwuQnWKKbk0cEfdlIb2HmQ7sFg3CnYksA6xuF7fEZYd%2FzK%2Fdca%2BK%2BLk344wx5KGrgY6nQFUMvebQjcloyoBZ8DZRurGnAA6uK%2Fqlb2%2FB%2BLshgA%2BFsX5zUGgxHrPWD8cQiA%2F78DKA4T08BiPy0G%2BHrLGKktdB2Z1H5Q5Tc2qd0%2BPYpSk3JgqHn6ezvb1kWZMwVlrgdxy9%2FYb1uadBOc05jpg4Cmj8elgO0unHDL90%2BLjLN6AmZ%2FURuvlzOviPRHwMbFEo6x1Je5OYYij2b%2B%2FhLCQ&Expires=1707183309](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwisdev.kishou.go.jp%2Fdata%2Forigin%2Fa%2Fwis2%2Fsg-mss%2Fdata%2Fcore%2Fweather%2Fsurface-based-observations%2Ftemp%2FWIGOS_0-702-0-48698_20240206T000000-55875%2FIUSG01WSSS060000.bufr%3FAWSAccessKeyId%3DASIAUAYRRGZCOKXMOEMV%26Signature%3D5cFE%252F7U93%252B7q%252FyaJcfVp2QPMLO4%253D%26x-amz-security-token%3DIQoJb3JpZ2luX2VjEOn%252F%252F%252F%252F%252F%252F%252F%252F%252F%252FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAOO4yPhKkTf16dtQQk0l3w5baQzX18f3bqEM8oapqVI0AiBbEis5gjC0%252FG0a1uiE4GXL3Z161K4hQ90FXPmf0lLAgCqrAwiy%252F%252F%252F%252F%252F%252F%252F%252F%252F%252F8BEAEaDDI3NjUyNTI5OTI2OCIM7QxhnNI14vHSgzLZKv8Ctc2htkNIZs423RvOQ4Zzp%252FcK9pabbx5pDb526%252FCj7K7cgXSfE6iguilT2cjTt5jRLEd1CqRnxTEpTjecCjmBruFVZ4G9Khuh044joatxcip%252BOURLcAlxUWnCjS1Bmw1r01dDURdbC5JxVJaOre19dwjRPXOu%252BRD0aCpbXYEIQM0Ln9iE6wqbtudLY%252FDasF3i63xollETh7EzB7jmUTGIT2e2lo2g966yIAGJ%252FGppnhpZqspCot%252BV1BYW3SOswoDBvFQyDh1Ng%252FSOamwtasr6sAU%252FcwcCZAbU9%252BBP4b7ZtaW%252BZsMC6dS5hJBoheEHpBEl%252B6J8YUF8o58XbVKukbRwBEraRu7nnCPaQRFz%252BJnOE8hk%252Fkd503XdaWzlAcBmaeOaY83UuSAn8uMwbVSc6blu2mNB1AyGce90vH0P0Xfyro12Mcw5tI486Criqpqq3p7rFpG4vVwuQnWKKbk0cEfdlIb2HmQ7sFg3CnYksA6xuF7fEZYd%252FzK%252Fdca%252BK%252BLk344wx5KGrgY6nQFUMvebQjcloyoBZ8DZRurGnAA6uK%252Fqlb2%252FB%252BLshgA%252BFsX5zUGgxHrPWD8cQiA%252F78DKA4T08BiPy0G%252BHrLGKktdB2Z1H5Q5Tc2qd0%252BPYpSk3JgqHn6ezvb1kWZMwVlrgdxy9%252FYb1uadBOc05jpg4Cmj8elgO0unHDL90%252BLjLN6AmZ%252FURuvlzOviPRHwMbFEo6x1Je5OYYij2b%252B%252FhLCQ%26Expires%3D1707183309&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485450556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=GZNCVQk4mXxIfAt04pXkFZLlrUG%2BKF8wQ%2FaYmVv2oVc%3D&reserved=0)",
"href": "[https://opendata.dwd.de/test/wis2/cache/24h/sg-mss/IUSG01WSSS060000.bufr](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fopendata.dwd.de%2Ftest%2Fwis2%2Fcache%2F24h%2Fsg-mss%2FIUSG01WSSS060000.bufr&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485461409%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=AhtHYHH48V2YTPrkbmGkQUlK3VU%2F0CG1icNWZkhJ3MQ%3D&reserved=0)",
"rel": "canonical",
"type": "application/x-bufr"
},
{
"rel": "via",
"type": "text/html",
"href": "[https://wisdev.kishou.go.jp/data/origin/a/wis2/sg-mss/data/core/weather/surface-based-observations/temp/WIGOS_0-702-0-48698_20240206T000000-55875/0-20000-0-48698](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwisdev.kishou.go.jp%2Fdata%2Forigin%2Fa%2Fwis2%2Fsg-mss%2Fdata%2Fcore%2Fweather%2Fsurface-based-observations%2Ftemp%2FWIGOS_0-702-0-48698_20240206T000000-55875%2F0-20000-0-48698&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485468349%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=h7oZYjhr4MdSRdV1E0GfGqv2atXH3XXpGtXYEn1c5uU%3D&reserved=0)"
"href": "[https://oscar.wmo.int/surface/#/search/station/stationReportDetails/0-20000-0-48698](https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Foscar.wmo.int%2Fsurface%2F%23%2Fsearch%2Fstation%2FstationReportDetails%2F0-20000-0-48698&data=05%7C02%7Cmlimper%40wmo.int%7Ce8e5c6c3616d4119b0c208dc26be2f0a%7Ceaa6be54468740c49827c044bd8e8d3c%7C0%7C0%7C638427845485475767%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=jF3CIkMteFLZe90%2FoRfravVWwSU5LOJ2hvjUhBVD%2Bwg%3D&reserved=0)"
}
]
],
"_comment": {
"errors": [
"geometry latitude is not correct"
]
}
}
Thank you
Regards,
Cheng Zhu Yuan ∙ Senior Meteorologist (Meteorological Observations and Systems Division)∙ Meteorological Service Singapore∙ Tel : +65 6543 2062 ∙ Fax : +65 6545 7192 ∙ Email : [email protected]
An uncaught exception occurs if the year or month are missing from the BUFR file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.