Suite

Comment extraire des données d'une colonne POINT dans PostGIS à l'aide de JAVA (jdbc)

Comment extraire des données d'une colonne POINT dans PostGIS à l'aide de JAVA (jdbc)


Comment obtenez-vous une valeur d'une colonne qui a unindiquerType de données.

Je viens de passer de MySQL à PostGIS. J'ai une colonne qui s'appelle point et est de typeIndiquer.

Je veux obtenir cette valeur à la suite d'une requête SQL.

j'ai fait des choses commers.getString("texte")etrs.getInt("nombre")pour les autres colonnes et elles fonctionnent bien, mais faire

rs.getObject("point")

Me fait obtenir l'erreur

org.postgresql.util.PSQLException : cette connexion a été fermée.

Voici plus de code, j'ai pensé que cela pourrait être une question pour les vrais nuls, donc je ne l'ai pas collé avant.

Essentiellement, j'ai une valeur dans mon application qui peut prendre une variété de types de données. N'ayant pas vraiment de base de données OO, j'ai créé une table avec beaucoup de colonnes, en fonction de celle qui est remplie, je saurai à quel type de données correspond la valeur de cet enregistrement.

Ensemble statique public readStatements(String subUri, String preUri) { Définir déclarations = nouveau HashSet(); String sql = "SELECT sub_id, sub_uri, sub_value, pre_id, pre_uri, pre_value, obj_id, obj_uri, obj_value, number, text, file, url, point FROM triples WHERE + subUri + "" AND + preUri + """ ; ResultSet rs = Dao.executeQuery(sql); try { while (rs.next()) { STriple s = new STriple(); s.setSubject(new SResource(rs.getString("sub_uri"))); s.setPredicate(new SResource(rs.getString("pre_uri"))); if (rs.getObject("obj_id") != null) { s.setObject(new SResource(rs.getString("obj_uri"))); } else if (rs.getObject("point").toString() != null) { Objet pointObject = rs.getObject("point")); } else if (rs.getObject("nombre") != null) { s.setObject(nouveau SNumber(rs.getDouble("nombre"))); } else if (rs.getObject("text") != null) { s.setObject(new SText(rs.getString("text"))); } else if (rs.getObject("url") != null) { s.setObject(new SURL(rs.getString("url"))); } instructions.add(s); } } catch (SQLException e) { e.printStackTrace(); } déclarations de retour ; }

Java est fortement typé, vous devez donc récupérer le point dans un objet géométrique avec une méthode "to string"

PGgeometry geom = (PGgeometry)rs.getObject("point"); System.out.println(geom.toString());

voir : http://postgis.refractions.net/docs/ch05.html#id2633989


Bases de données SQL utilisant JDBC

Vous pouvez utiliser Databricks pour interroger de nombreuses bases de données SQL à l'aide de pilotes JDBC.

Databricks Runtime contient le pilote org.mariadb.jdbc pour MySQL.

Databricks Runtime contient des pilotes JDBC pour Microsoft SQL Server et Azure SQL Database. Consultez les notes de version de Databricks Runtime pour obtenir la liste complète des bibliothèques JDBC incluses dans Databricks Runtime.

Vous pouvez également utiliser d'autres bases de données SQL, y compris (mais sans s'y limiter) PostgreSQL et Oracle. Voir Bibliothèques pour savoir comment installer un JAR de bibliothèque JDBC pour les bases de données dont les pilotes ne sont pas disponibles dans Databricks.

Cet article explique comment utiliser l'API DataFrame pour se connecter aux bases de données SQL à l'aide de JDBC et comment contrôler le parallélisme des lectures via l'interface JDBC. Cet article fournit des exemples détaillés utilisant l'API Scala, avec des exemples Python et Spark SQL abrégés à la fin. Pour tous les arguments pris en charge pour la connexion aux bases de données SQL à l'aide de JDBC, consultez JDBC vers d'autres bases de données.

Les exemples de cet article n'incluent pas les noms d'utilisateur et les mots de passe dans les URL JDBC. Au lieu de cela, il s'attend à ce que vous suiviez le guide de l'utilisateur de la gestion des secrets pour stocker vos informations d'identification de base de données en tant que secrets, puis que vous les exploitiez dans un bloc-notes pour remplir vos informations d'identification dans un objet java.util.Properties. Par exemple:

Pour un exemple complet de gestion des secrets, voir Exemple de workflow secret .


Comment pouvez-vous insérer un polygone GeoJSON dans PostGIS à l'aide de l'espace réservé Java JDBC PreparedStatement ?

Si vous utilisez la bibliothèque javascript "Leaflet" et son plugin "Draw", vous pouvez récupérer geojson en ressemblant à ceci :

Si vous envoyez json comme ci-dessus à un serveur Web (avec du code Java, par exemple Play Framework), j'aimerais ensuite connaître le moyen le plus simple de l'insérer ou de le mettre à jour dans la base de données postgis sans utiliser la concaténation de chaînes pour la création de la chaîne sql. En effet, cela fonctionne pour créer une chaîne SQL avec la structure ci-dessus, mais vous voulez éviter la concaténation de chaînes, ce qui est la raison de ma question sur la façon d'utiliser à la place les espaces réservés PreparedStatement. Par exemple, le code SQL suivant peut être exécuté directement depuis pgAdmin (et aussi via le code JDBC) :

Cependant, comme la plupart des développeurs l'ont appris, nous devons éviter la concaténation de chaînes et utiliser à la place des espaces réservés, par exemple si vous utilisez PreparedStatement (ou par exemple JdbcTemplate si vous utilisez Spring Framework).

Vous trouverez ci-dessous un code pour illustrer ce qui fonctionne et ce qui ne fonctionne pas.


Préparer des données Excel

Supposons le fichier excel suivant

qui contient les éléments suivants dans le classeur :

Avant de télécharger le fichier dans la bibliothèque SharePoint, accédez à Fichier -> Parcourir les options d'affichage -> choisissez Éléments dans le classeur comme illustré ci-dessous. Enregistrez ensuite le fichier et téléchargez-le dans la bibliothèque de documents SharePoint.


Prochaines étapes

  • Pour voir une présentation de INFORMATION_SCHEMA , accédez à Introduction à BigQuery INFORMATION_SCHEMA .
  • Apprenez à utiliser INFORMATION_SCHEMA pour obtenir des métadonnées de réservation.
  • Apprenez à utiliser INFORMATION_SCHEMA pour obtenir des métadonnées de streaming.
  • Découvrez comment utiliser INFORMATION_SCHEMA pour obtenir des métadonnées d'ensemble de données.
  • Apprenez à utiliser INFORMATION_SCHEMA pour obtenir des métadonnées de table.
  • Apprenez à utiliser INFORMATION_SCHEMA pour obtenir des métadonnées de vue.

Sauf indication contraire, le contenu de cette page est sous licence Creative Commons Attribution 4.0 et les exemples de code sont sous licence Apache 2.0. Pour plus de détails, consultez les règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses filiales.


Remplir des éléments spécifiques de la liste SharePoint Online à l'aide du service Web Java lorsqu'une colonne déroulante est sélectionnée lors de la création d'un nouvel élément

J'ai besoin de remplir certaines colonnes de la liste lorsque je sélectionne une valeur dans la colonne déroulante de la même liste. Supposons, par exemple, que je sélectionne créer un élément dans la liste, puis que j'ai une colonne appelée FlightNumber. Lorsque je sélectionne un numéro de vol particulier, je dois utiliser le service Web Java pour appeler et remplir certains champs de la liste en fonction du numéro de vol que j'ai sélectionné. J'ai essayé de chercher mais je n'ai pas réussi à comprendre, s'il vous plaît aidez-moi à ce sujet.


Comment extraire des données d'une colonne POINT dans PostGIS à l'aide de JAVA (jdbc) - Systèmes d'information géographique

Le Java Chromium Embedded Framework (JCEF) est un cadre simple permettant d'intégrer des navigateurs basés sur Chromium dans d'autres applications utilisant le langage de programmation Java.

CEF est un projet open source sous licence BSD fondé par Marshall Greenblatt en 2008 et basé sur le projet Google Chromium. Contrairement au projet Chromium lui-même, qui se concentre principalement sur le développement d'applications Google Chrome, CEF se concentre sur la facilitation des cas d'utilisation de navigateurs intégrés dans des applications tierces. Le CEF isole l'utilisateur de la complexité sous-jacente du code Chromium et Blink en offrant des API stables de qualité production, des branches de publication suivant des versions spécifiques de Chromium et des distributions binaires. La plupart des fonctionnalités de CEF ont des implémentations par défaut qui offrent des fonctionnalités riches tout en nécessitant peu ou pas de travail d'intégration de la part de l'utilisateur. Il existe actuellement plus de 100 millions d'instances installées de CEF dans le monde, intégrées dans des produits d'un large éventail d'entreprises et d'industries. Une liste partielle des entreprises et des produits utilisant le CEF est disponible sur la page Wikipédia du CEF. Certains cas d'utilisation de CEF incluent :

  • Intégrer un contrôle de navigateur Web compatible HTML5 dans une application native existante.
  • Création d'une application « shell » native légère qui héberge une interface utilisateur développée principalement à l'aide de technologies Web.
  • Rendre le contenu Web « hors écran » dans des applications qui ont leurs propres cadres de dessin personnalisés.
  • Agir en tant qu'hôte pour les tests automatisés des propriétés et applications Web existantes.

CEF prend en charge un large éventail de langages de programmation et de systèmes d'exploitation et peut être facilement intégré dans des applications nouvelles et existantes. Il a été conçu dès le départ avec à l'esprit les performances et la facilité d'utilisation. Le framework de base comprend des interfaces de programmation C et C++ exposées via des bibliothèques natives qui isolent l'application hôte des détails d'implémentation de Chromium et Blink. Il offre une intégration étroite entre le navigateur et l'application hôte, y compris la prise en charge de plug-ins personnalisés, de protocoles, d'objets JavaScript et d'extensions JavaScript. L'application hôte peut contrôler en option le chargement des ressources, la navigation, les menus contextuels, l'impression et plus encore, tout en profitant des mêmes performances et technologies HTML5 disponibles dans le navigateur Web Google Chrome.

Ce projet fournit un Java Wrapper pour CEF (JCEF).

Le projet JCEF est une extension du projet Chromium Embedded Framework (CEF) hébergé sur https://bitbucket.org/chromiumembedded/cef/. JCEF maintient une branche de développement qui suit la branche de publication CEF3 la plus récente. Le code source JCEF peut être téléchargé, construit et empaqueté dans une distribution binaire. Une fois que vous avez créé la distribution binaire pour votre plate-forme, vous pouvez la distribuer en tant que package autonome sans dépendances supplémentaires sur le code source JCEF, CEF ou Chromium. Visitez la page Wiki BranchesAndBuilding pour des instructions détaillées.

JCEF est toujours un travail en cours. Quelques façons dont vous pouvez aider :

- Votez pour les problèmes dans le suivi des problèmes JCEF qui sont importants pour vous. Cela aide à prioriser le développement.

- Signalez tous les bogues que vous trouvez ou les demandes de fonctionnalités qui sont importantes pour vous. Assurez-vous de rechercher d'abord les problèmes existants avant d'en créer de nouveaux. Veuillez utiliser le forum JCEF et non l'outil de suivi des problèmes pour les questions d'utilisation. Chaque numéro du JCEF doit :

  • Incluez la révision JCEF, la révision CEF ou la version de distribution binaire.
  • Incluez des informations sur votre système d'exploitation et la version du compilateur.
  • Si le problème est un bogue, veuillez fournir des informations détaillées sur la reproduction.
  • Si le problème est une fonctionnalité, veuillez décrire pourquoi la fonctionnalité est bénéfique.

- Rédiger des tests unitaires pour des fonctionnalités nouvelles ou existantes.

- Les demandes de tirage et les correctifs sont les bienvenus. Affichez les problèmes ouverts dans le suivi des problèmes JCEF ou recherchez TODO (cef) dans le code source pour des idées.

Si vous souhaitez apporter des modifications au code source de JCEF, veuillez suivre les directives ci-dessous :

- Créez ou trouvez un problème approprié pour chaque bogue, fonctionnalité ou changement distinct.

- Soumettez une pull request ou créez un patch avec vos modifications et joignez-le au numéro JCEF. Les modifications doivent :

  • Être soumis par rapport à la branche principale JCEF actuelle à moins de corriger explicitement un bogue dans une branche de publication CEF.
  • Suivez le style des fichiers sources JCEF existants. En général, JCEF utilise le style de codage Chromium.
  • Incluez des tests unitaires nouveaux ou modifiés en fonction de la fonctionnalité.
  • Ne pas inclure les modifications inutiles ou sans rapport.

Je suppose que Java (8, 11 ou 14) est installé sur votre ordinateur. Il existe plusieurs IDE d'Eclipse, NetBeans, IntelliJ IDEA. J'utilise principalement IntelliJ IDEA, vous pouvez utiliser tout ce que vous maîtrisez bien, les développeurs Spring ont également construit un outil gratuit pour développer des applications Spring connu sous le nom de Spring Tools Suite que vous pouvez consulter.

Pour commencer, rendez-vous sur https://start.spring.io/ , vous obtiendrez une interface qui ressemble à celle illustrée ci-dessous, peut-être sur un thème léger.

Sur le site, vous pouvez définir les exigences de votre projet, en utilisant Java ou Kotlin comme langage de programmation principal, la version Spring Boot (éviter SNAPSHOT) et simplement utiliser la dernière version, Packing go with Jar, Project choisissez Maven Project, Vous pouvez spécifier le La version Java que vous avez installée localement, les métadonnées du projet et enfin, les dépendances, si indispensables, sont Spring Web, Spring Data JPA, PostgreSQL. Vous pouvez maintenant télécharger votre dossier de projet et vous êtes prêt à coder. D'autres dépendances clés seront installées à partir du référentiel Maven.

Le fichier pom.xml est un fichier important dans votre projet, il vous permet d'installer vos dépendances à partir du référentiel Maven, comme indiqué ci-dessous. Pour les gars de Python, c'est l'équivalent de pip installer. Assurez-vous d'avoir des dépendances Hibernate Spatial, Lombok, PostGIS, Spring Data JPA, PostgreSQL.

Dans le dossier des ressources de votre application, il y a le fichier applications.properties. C'est ici que vous définissez les paramètres de votre base de données, parmi d'autres configurations.

Assurez-vous que vous utilisez org.hibernate.spatial.dialect.postgis.PostgisDialect parce que nous avons affaire à des données de géométrie en s'appuyant sur PostGIS.

Par défaut, le serveur Tomcat fourni avec la configuration de Spring Boot s'exécute sur le port 8080, je viens de configurer le mien pour qu'il s'exécute sur 8081.


3.7. fichier de configuration XML

Une autre approche de la configuration consiste à spécifier une configuration complète dans un fichier nommé hibernate.cfg.xml . Ce fichier peut être utilisé en remplacement du fichier hibernate.properties ou, si les deux sont présents, pour écraser les propriétés.

Le fichier de configuration XML est censé se trouver par défaut à la racine de votre CLASSPATH . Voici un exemple:

L'avantage de cette approche est l'externalisation des noms de fichiers de mappage vers la configuration. Le fichier hibernate.cfg.xml est également plus pratique une fois que vous devez régler le cache Hibernate. Vous avez le choix d'utiliser hibernate.properties ou hibernate.cfg.xml . Les deux sont équivalents, à l'exception des avantages mentionnés ci-dessus de l'utilisation de la syntaxe XML.

Avec la configuration XML, démarrer Hibernate est alors aussi simple que :

Vous pouvez sélectionner un autre fichier de configuration XML en utilisant :


Conception d'une extension spatiale Java pour les bases de données relationnelles

Jaspa (Java Spatial) est une nouvelle extension spatiale pour les systèmes de gestion de bases de données relationnelles (SGBDR). C'est le résultat d'un projet de recherche qui vise à atteindre deux objectifs : tout d'abord, combler l'absence dans le monde des logiciels libres et ouverts (FOSS) d'une solide alternative Java à PostGIS, la principale extension spatiale écrite en C. Deuxièmement, exploiter les avantages de Java et des bibliothèques géospatiales Java par rapport au C en termes de portabilité et de facilité d'extension. La programmation Java à des fins géospatiales est un domaine florissant et des solutions similaires à Jaspa sont récemment apparues, mais aucune d'entre elles ne peut être assimilée à PostGIS en raison du manque de fonctionnalités. Jaspa implémente actuellement presque toutes les fonctionnalités de PostGIS. La prochaine étape sera l'enrichissement du logiciel avec des fonctionnalités plus sophistiquées : stockage de données spatiales dans une structure topologique au sein du SGBDR, tolérance d'agrégat et fonctionnalités géodésiques. Jaspa est développé au Département d'ingénierie cartographique, de géodésie et de photogrammétrie de l'Universidad Politécnica de Valencia et il a été publié sous une licence Open Source sur le référentiel OSOR.eu. Ce document a été écrit par ses créateurs dans le but de présenter aux utilisateurs ses principales capacités.

Points forts

► Nous présentons Jaspa, une nouvelle extension spatiale Java open source pour les bases de données relationnelles. ► Il est basé sur les normes géospatiales de l'OGC et SQL/MM. ► Prend actuellement en charge PostgreSQL et H2 en tant que bases de données principales, peut potentiellement prendre en charge d'autres SGBD comme Oracle ou HSQLDB. ► Il offre toutes les fonctionnalités de PostGIS avec plus de 200 fonctions SQL spatiales. ► Les utilisateurs peuvent facilement créer de nouvelles fonctionnalités spatiales à l'aide de procédures stockées spatiales Java.


Voir la vidéo: Using QGIS with PostGIS