Suite

GeoServer convertit l'horodatage PostGIS avec le fuseau horaire

GeoServer convertit l'horodatage PostGIS avec le fuseau horaire


Dans une vue PostGIS, j'ai un champ de type de données "horodatage avec fuseau horaire". Dans GeoServer, ce champ est affiché avec le type de données "Timestamp"

Mon problème est que je veux que l'horodatage soit affiché dans mon application exactement comme il l'est dans ma base de données comme UTM. +00.

Ce que je reçois de GeoServer via la demande WFS est :

2010-08-20T16:56:15.095-04:00

Ce qui est stocké dans la base de données PostGIS est :

2010-08-20 20:56:15.095+00

Comment dire à GeoServer de ne pas convertir l'heure afin que je voie l'heure exactement telle qu'elle se trouve dans la base de données en UTM ? Est-ce sur Apache, System Time, GeoServer config ?

Exécution de GeoServer sur la dernière version stable de Suse linux Ent.


La seule façon à laquelle je peux penser est de changer le fuseau horaire par défaut sur votre serveur pour qu'il soit UTM+00. Lorsque le pilote postgres jdbc obtient la date du serveur, il l'analyse dans un objet Date, qui l'affiche par défaut dans le fuseau horaire par défaut. Et il n'y a aucun moyen avec GeoServer wfs de fournir un format personnalisé pour la sortie de date en GML.

Vous pouvez essayer de définir le fuseau horaire avec la propriété système jvm : -Duser.timezone=GMT.


Je suppose que vous avez une colonne nommée ct qui a le type TIMESTAMPTZ dans la table t . Ensuite, vous pouvez utiliser :

pour obtenir le décalage du fuseau horaire en secondes. Cela vous donne 3600 de UTC / GMT, ce qui signifie soit GMT+1, CET ou autre. La valeur renvoyée dépend de votre paramètre TIMEZONE.

Exemple (j'habite en Allemagne, le fuseau horaire actuel est GMT+1 / CET ):

Comme vous pouvez le voir, il affiche toujours n'importe quoi dans le fuseau horaire configuré. Ainsi, le décalage que vous obtiendrez avec EXTRACT (TIMEZONE FROM . ) dépend de votre réglage TIMEZONE. Le fuseau horaire qui a été donné sur INSERT est perdu, car il ne vaut pas la peine d'être sauvegardé. La chose qui compte, c'est que tout soit correct et cela ne devrait pas dépendre du réglage TIMEZONE. PostgreSQL le fait très bien.

"PostgreSQL le fait très bien."

J'aime beaucoup PostgreSQL, mais dans cette fonctionnalité particulière, il ne le fait pas bien. Le fuseau horaire n'est pas seulement décalé par rapport à GMT. Le fuseau horaire est étroitement lié aux règles politiques qui impliquent l'heure d'été. Comme il existe de nombreux fuseaux horaires avec le même décalage et des règles d'heure d'été différentes, lorsque PG oublie le fuseau horaire d'origine, il perd en fait les informations.

Personnellement, je stocke le fuseau horaire d'origine séparément pour les dates importantes sous la forme « Amérique/New_York ». Si quelqu'un a une meilleure solution, il est le bienvenu.

Dans Postgres, le fuseau horaire d'entrée d'origine est perdu même si vous stockez la valeur datetime dans horodatage avec fuseau horaire Type de données.

Désavantage:
Dites si j'ai des données de date/heure (ainsi que des informations sur le fuseau horaire) indiquant quand les gens utilisent leur application facebook partout dans le monde. Maintenant, je stocke ces valeurs dans horodatage avec fuseau horaire Type de données. Un jour au hasard, je veux voir à quel point les gens utilisent leur application FB le matin par rapport à la nuit et si la même tendance est observée dans tous les pays. Mais attendez, je n'ai plus les informations de fuseau horaire. Assis à D.C., ce que je peux voir, c'est comment l'activité s'est déroulée dans le monde entier à 10h00 HNE.

Avantage:
Si vous comparez deux sources de données avec un horodatage du même fuseau horaire, mais l'une a été stockée comme ce que la montre locale montrait tandis que l'autre était stockée en la convertissant en UTC. Ici, ce que vous pouvez faire est simplement de stocker l'horodatage dans le type de données timestamptz et de dire à quel fuseau horaire il appartient, puis vous pouvez les comparer facilement.
Par exemple,
Une activité dans le fuseau horaire PST a été enregistrée le 2014-10-19 10:23:54 . Maintenant, deux sources de données distinctes l'ont stocké séparément. Datasource1 l'a stocké comme 2004-10-19 10:23:54 PST , Datasource2 l'a stocké comme 2014-10-19 18:23:54 UTC . S'ils sont stockés dans le horodatage type de données, il vous montrera en même temps que vous le faites

Étant donné que l'horodatage est enregistré pour un instant dans le temps ZULU/GMT, qui ne change jamais son décalage (puisque c'est la référence), il n'est pas nécessaire d'enregistrer le fuseau horaire. Vous n'avez qu'à ajouter/soustraire le décalage au décalage de fuseau horaire GÉOPOLITIQUE dans le PASSÉ, PRESENT ou FUTUR.

Toi FAIRE besoin de connaître le FUSEAU HORAIRE GÉOPOLITIQUE exact en vigueur à l'endroit auquel l'heure s'applique actuellement à des fins PASSÉES et ACTUELLES.

Pour les instances futures à des fins temporelles, cela devient peut-être plus problématique. Cela devrait quand même fonctionner. Pensez au coucher du soleil. Si un endroit terrestre a un coucher de soleil à minuit, heure ZULU (quelque part au-dessus de l'océan Atlantique ou du nord du Canada jusqu'en Alaska en hiver dans l'hémisphère nord), et que l'heure est supposée être 20 heures (-4:00 décalé) à cet endroit à au moment où vous l'enregistrez dans le système et que vous l'enregistrez comme « date d'hiver dans le futur 20h00 », il sera enregistré comme 24h00 GMT dans la base de données.


Re: GeoServer convertit l'horodatage de l'UTM en heure locale ?

Je veux que l'horodatage soit affiché dans mon application exactement comme dans ma base de données (comme UTM. +00 .)

Ce que je reçois de GeoServer via la demande WFS est :

2010-08-20T16:56:15.095-04:00

Ce qui est stocké dans la base de données PostGIS est :

2010-08-20 20:56:15.095+00

Comment dire à GeoServer de ne pas convertir l'heure afin que je voie l'heure exactement telle qu'elle se trouve dans la base de données en UTM ? Est-ce sur Apache, System Time, GeoServer config ?

Le type de données PostGIS est "horodatage avec fuseau horaire". Dans GeoServer, ce champ est affiché avec le type de données "Timestamp"

Exécution de GeoServer sur la dernière version stable de Suse linux Ent.

Informations sur la construction du géoserveur

· Version 2.1.0

· Subversion Révision 15809

· Date de construction 11-mai-2011 20:09

· GeoTools Version 2.7.1 (rév -1)


Un cadre spatio-temporel pour la recherche historique et culturelle sur la Chine

Lorsqu'ils mènent des études liées à l'histoire et à la culture chinoises, les chercheurs sont souvent confrontés à la complexité des noms géographiques chinois historiques et des calendriers chinois traditionnels. De plus, il est difficile d'intégrer la recherche sociale connexe sans l'apport d'informations contextuelles complètes et contiguës. Pour résoudre ces problèmes, cet article propose un cadre spatio-temporel pour mener des recherches historiques et culturelles sur la Chine. Tout d'abord, les méthodes de conversion entre les différents calendriers chinois traditionnels ont été illustrées. Ensuite, des modèles de données spatio-temporelles pour les noms géographiques historiques ont été conçus et décrits en fonction des propriétés des sources de données représentatives. Sur la base de ces modèles, le cadre spatio-temporel a été construit en utilisant la collecte et le traitement des données. Avec l'aide de cette infrastructure proposée, les chercheurs peuvent explorer plus facilement les informations spatio-temporelles et mener d'autres recherches historiques et culturelles sur la Chine. Enfin, un projet intitulé « Sino-FamilyTree-GIS » a été utilisé comme étude de cas pour démontrer la valeur de ce cadre.

Points forts

► Nous avons introduit un cadre spatio-temporel pour la recherche historique et culturelle sur la Chine. ► Nous avons fourni un outil permettant aux chercheurs de tirer pleinement parti des informations spatio-temporelles pour promouvoir la recherche chinoise. ► Les méthodes de conversion entre les différents calendriers chinois traditionnels ont été illustrées. ► Les modèles de données spatio-temporelles des noms géographiques historiques ont été conçus. ► Les étapes de construction du cadre spatio-temporel ont été introduites.


Une preuve de concept est présentée sur la façon de produire des cartes Web d'inondations côtières en temps quasi réel tenant compte de l'incertitude à partir d'observations et de prévisions du niveau d'eau, qui ont été calculées pour les sites de marégraphes et rendues accessibles au public. La simulation d'inondation stochastique prend en compte plusieurs sources d'incertitude, qui n'ont jusqu'à présent été utilisées ni dans les modèles de baignoires ni dans les modèles hydrodynamiques. La simulation est basée sur la méthode de Monte Carlo. La faisabilité de l'approche proposée est démontrée par une implémentation utilisant le calcul généraliste sur des unités de traitement graphique. Le résultat de la recherche est que les technologies actuelles permettent la construction d'un nouveau système qui se connecte aux sources de données officielles et qui prend en compte les sources d'incertitude dont l'inclusion dans le passé a été évitée en étant soit mal connue, soit trop coûteuse en calcul.

Kovanen a contribué au développement de l'idée, a réalisé la mise en œuvre et a écrit le manuscrit.

Oksanen a conçu l'idée originale, a contribué à son développement, a fourni la base du code source pour la convolution du processus et a révisé de manière critique le manuscrit.

Sarjakoski a contribué au développement de l'idée et a supervisé le travail.


Données de mouvement dans le SIG #4 : variations dans le temps

Dans le post précédent, j'ai présenté une approche pour généraliser de grands ensembles de données de trajectoire en extrayant des flux entre les cellules d'une grille irrégulière basée sur les données. Cette généralisation fournit une bien meilleure vue d'ensemble du flux et de la directionnalité qu'un simple tracé des données de trajectoire brutes d'origine ne peut le faire. L'article présentant cette méthode contient également des visualisations plus avancées qui montrent des statistiques de cellule, telles que le nombre global de trajectoires ou la qualité de la généralisation. Une autre information souvent intéressante lors de l'exploration des données de mouvement est l'heure du mouvement. Par exemple, à LBS2016 la semaine dernière, M. Jahnke a présenté une application qui permet aux utilisateurs d'explorer le nombre de prises et de déposes de taxis à certains endroits :

En adoptant cette approche pour les cartes de flux généralisées, nous pouvons, par exemple, explorer quelles parties de la zone de recherche sont occupées à quel moment de la journée. Ici, j'ai divisé la journée en quatre quarts : la nuit de 0 à 6 (bleu clair), le matin de 6 à 12 (orange), l'après-midi de 12 à 18 (rouge) et le soir de 18 à 24 (bleu foncé).

Trajectoires agrégées avec marqueurs horaires aux nœuds du réseau de flux (crédits de données : projet GeoLife, tuiles cartographiques : Carto, données cartographiques : OSM)

La visualisation qui en résulte montre que dans l'ensemble, il y a moins de mouvement pendant les heures nocturnes de minuit à 6 heures du matin (quartier bleu clair). Semble raisonnable!

Un détail de mise en œuvre qui mérite d'être pris en compte est l'horodatage à utiliser pour compter le nombre de mouvements. Est-ce l'heure du premier point de la trajectoire entrant dans une cellule, ou l'heure à laquelle la trajectoire quitte la cellule, ou une valeur moyenne ? Dans l'implémentation actuelle, j'ai opté pour l'heure d'entrée. Cela signifie que si la personne suivie passe beaucoup de temps dans une cellule (par exemple sur le lieu de travail), le trajet de retour ne fait qu'ajouter au nombre de trajets nocturnes de la cellule voisine le long de la trajectoire.

Étant donné que les informations temporelles stockées dans la valeur m d'une entité PostGIS LinestringM ne contiennent aucune information de fuseau horaire, nous devons également faire attention à gérer les décalages nécessaires. Par exemple, la documentation GeoLife indique que tous les horodatages sont fournis en GMT alors que Pékin est dans le fuseau horaire GMT+8. Ce décalage doit être pris en compte dans le script d'analyse, sinon les comptes par heure de la journée seront partout.

En utilisant la même approche, nous pourrions également étudier d'autres variations, par ex. sur différents jours de la semaine, les variations saisonnières ou l'évolution sur plusieurs années.


1 réponse 1

La solution est en fait assez simple. Lors de la création d'une couche de dimension temporelle avec la méthode L.timeDimension.layer.geoJson, définissez simplement l'option updateTimeDimensionMode sur 'replace' :

La valeur par défaut de cette option est 'extremes' , ce qui signifie que vous obtenez tous les temps d'intervalle entre le temps min et le temps max.

Cette solution a fonctionné, cependant, le problème vient de l'export QGIS GeoJSON. Mes données se trouvent dans une base de données PostGIS et lorsqu'elles sont exportées avec QGIS, l'ordre des dates est perturbé, ce qui crée un problème de visualisation avec TimeDimension. J'ai essayé de mettre les données dans l'ordre sur un petit sous-ensemble et cela a fonctionné, cependant, ce n'est pas pratique pour toutes mes données. Pour le moment, j'essaie d'exporter directement à partir de PostGIS, mais cela crée un autre problème avec les intervalles vides.

Pourquoi ne triez-vous pas GeoJSON alors ?

Des suggestions sur la façon dont je peux trier les données GeoJSON par heure ?

Ce contrôle qualité pourrait être utile : gis.stackexchange.com/questions/68369/… (il a fallu une recherche sur Internet).

J'ai vu ce post, mais je me demandais s'il fallait trier au chargement ou traiter le fichier avant de le charger, sachant que j'avais un très grand ensemble de données. En passant, mes compétences en Javascript sont assez limitées.


Contenu

UNE géodatabase (également base de données géographique et base de données géospatiale) est une base de données de données géographiques, telles que des pays, des divisions administratives, des villes et des informations connexes. De telles bases de données peuvent être utiles pour les sites Web qui souhaitent identifier les emplacements de leurs visiteurs à des fins de personnalisation.

Les systèmes de base de données utilisent des index pour rechercher rapidement des valeurs. Cependant, cette façon d'indexer les données n'est pas optimale pour les requêtes spatiales. Au lieu de cela, les bases de données spatiales utilisent un index spatial pour accélérer les opérations de base de données.

En plus des requêtes SQL classiques telles que les instructions SELECT, les bases de données spatiales peuvent effectuer une grande variété d'opérations spatiales. Les opérations suivantes et bien d'autres sont spécifiées par la norme Open Geospatial Consortium :

  • Mesures spatiales : calcule la longueur de la ligne, la surface du polygone, la distance entre les géométries, etc.
  • Fonctions spatiales : modifiez les entités existantes pour en créer de nouvelles, par exemple en fournissant une zone tampon autour d'elles, en intersectant des entités, etc.
  • Prédicats spatiaux : autorise les requêtes vrai/faux sur les relations spatiales entre les géométries. Les exemples incluent « deux polygones se chevauchent-ils » ou « y a-t-il une résidence située à moins d'un mile de la zone dans laquelle nous prévoyons de construire la décharge ? » (voir DE-9IM)
  • Constructeurs de géométrie : crée de nouvelles géométries, généralement en spécifiant les sommets (points ou nœuds) qui définissent la forme.
  • Fonctions d'observation : requêtes qui renvoient des informations spécifiques sur une caractéristique telle que l'emplacement du centre d'un cercle

Certaines bases de données ne prennent en charge que des ensembles simplifiés ou modifiés de ces opérations, en particulier dans le cas des systèmes NoSQL comme MongoDB et CouchDB.

Indices spatiaux sont utilisées par les bases de données spatiales (bases de données qui stockent des informations relatives aux objets dans l'espace) pour optimiser les requêtes spatiales. Les types d'index conventionnels ne gèrent pas efficacement les requêtes spatiales telles que dans quelle mesure deux points diffèrent ou si les points se situent dans une zone spatiale d'intérêt. Les méthodes courantes d'indexation spatiale incluent :

UNE requête spatiale est un type spécial de requête de base de données pris en charge par les bases de données spatiales, y compris les géodatabases. Les requêtes diffèrent des requêtes SQL non spatiales de plusieurs manières importantes. Deux des plus importantes sont qu'elles permettent l'utilisation de types de données géométriques tels que des points, des lignes et des polygones et que ces requêtes prennent en compte la relation spatiale entre ces géométries.

Les noms de fonction pour les requêtes diffèrent d'une géodatabase à l'autre. La liste suivante contient des fonctions couramment utilisées intégrées à PostGIS, une géodatabase gratuite qui est une extension PostgreSQL (le terme « géométrie » fait référence à un point, une ligne, une boîte ou une autre forme bidimensionnelle ou tridimensionnelle) :


Conversion des ticks en barres de plage

Étant donné que les barres de gamme sont déterminées par le mouvement des prix, une nouvelle barre de gamme n'est créée qu'une fois que la gamme spécifiée a été atteinte. Par exemple, si le montant de Range spécifié est de 10, cela signifie que chaque Range Bar aura une plage (High/Max à Low/Min) de 10. Il est donc concevable qu'une seule Range Bar puisse représenter plusieurs jours si le mouvement tout au long ces menuets/heures/jours n'étaient que dans une fourchette de prix de 10. Une fois qu'une barre de gamme est fermée, l'ouverture de la barre de gamme suivante sera toujours exactement au même prix que la clôture de la barre de gamme précédente.

Le montant de la plage détermine la taille des barres de plage.

Supposons qu'au cours d'une période donnée de cinq minutes, les prix oscillent entre 10 et 12, passant de 10 à 12, puis de nouveau à 10, puis de nouveau à 12. Si le montant de la plage pour ce graphique était défini sur 1, cela entraînerait six barres de plage. , deux de 10 à 12, deux remontant à 10, et deux autres remontant jusqu'à 12, comme le montre l'exemple ci-dessous :

Étant donné que toutes les oscillations susmentionnées se sont produites dans une période de cinq minutes (l'intervalle sous-jacent spécifié dans cet exemple) lorsque la barre de plage est construite historiquement, cette période de cinq minutes serait représentée par seulement deux barres de plage, comme indiqué dans l'exemple ci-dessous :

Je pense que cela donne un exemple clair de ce que j'essaie de sélectionner dans le tableau des ticks. Une fenêtre avec sous-sélection serait-elle la solution pour faire quelque chose comme ça ? Ou fonction ?

Quelqu'un est-il prêt à montrer une solution simple à cette sélection complexe ?? Le résultat ressemblerait à


Voir la vidéo: GeoServer Web GIS: Web Map Tile Service WMTS Publishing with PostGIS EN