У меня есть Geo JSON с погодными данными примерно с 140 метеостанций. Проблема состоит в том, что каждая станция указана в списке 3 раза, поскольку Geo JSON содержит данные из 3 различных показаний для каждой станции: 3 часа чтения go, 2 часа чтения go и 1 час чтения go , В URL, откуда я получаю этот Geo Json, перечислены данные в следующей последовательности: -3h
данные для всех станций, затем -2h
данные для всех станций и, наконец, -1h
данные. Эта последовательность показана на рисунке, и, как вы можете видеть, одна и та же станция указана 3 раза (функции # 0, # 142 и # 283) в соответствии с часом показаний. Также можно видеть, что формат properties time
равен 2020-02-22T21:00:00
, где минуты и секунды всегда 00:00
для -3h
, -2h
и -1h
, поскольку показания выполняются в час.
Когда я запускаю скрипт, он просто показывает мне данные из -3h
, вероятно, потому что это первая дата, которую он получает в последовательности.
Вот основная часть скрипта, где я получаю температуру:
<script>
//Get current date-time withh same format GeoJSON uses
var curdt = new Date().toJSON().substring(0,19);
map.on('load', function() {
map.addSource('points', {
'type': 'geojson',
'data':
'https://api.ipma.pt/open-data/observation/meteorology/stations/obs-surface.geojson',
});
map.addLayer({
'id': 'Temp (ºC)',
'type': 'symbol',
'source': 'points',
// filter data by properties time
"filter": [
"<=",
[ "get", "time" ], curdt
],
'layout': {
"visibility": "none",
'text-field': ['get', 'temperatura'],
'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'],
'text-offset': [0, 0],
'text-anchor': 'top',
"text-size": 15
});
---
</script>
Я хотел бы отфильтровать (игнорировать) более старые данные и просто получить данные о погоде -1h
. Например, если current date-time
равно 2020-02-22T23:18:35
, я хотел бы получить данные Geo JSON для всех станций, имеющих properties->time: 2020-02-22T22:00:00
.
У меня очень мало знаний о JS, и я попытался адаптировать один параметр фильтра, и он работает для time <= current time
, но как я могу заставить его работать для time = (current time - 1h)
?
Есть ли способ отфильтровать только данные -1h
Geo JSON и отобразить эти значения вместо -3h
значений, которые он отображает сейчас? Спасибо.