Suite

PostGIS étrange différence de distance calculée à partir de différentes définitions de points

PostGIS étrange différence de distance calculée à partir de différentes définitions de points


J'ai une base de données POSTGIS fonctionnelle, des données CBS néerlandaises chargées à l'aide de shp2pgsql et je souhaite maintenant mapper les coordonnées lat,lon sur des multipolygones.

Tous les exemples que je vois utilisent des coordonnées lon lat mais si je le fais, j'obtiens une distance énorme à mes objets geom… Si j'utilise les coordonnées de http://epsg.io/28992/map# cela fonctionne…

SELECT gm_naam, st_distance(geom, ST_SetSRID(ST_MakePoint(5.112472, 52.008417),28992) ) as dist, ST_Distance(geom, ST_SetSRID(ST_Point(134989.82, 448191.66),28992) ) as dist2 FROM nlstaging.gem_Asc 2013 ordre par dist2

Le résultat est comme ceci :

gm_naam dist dist2 Nieuwegein 465085,92145570647 0.0 IJsselstein 464133.17518803617 2018.4612972214297 Houten 463571.9453450817 2037.1431117615386 Vianen 459472.14358348626 2102.6589540861714 Utrecht 467845.0647304365362

Donc Nieuwegein est la bonne réponse, dist2 est le calcul coorect mais les coordonnées ne sont PAS lon,lat…

Question : Comment puis-je spécifier un point en utilisant lon lat et avoir une distance correcte ?


Votre table semble être une stéréographie oblique d'Amersfoort (EPSG:28992). Pour utiliser un point lon/lat comme entrée, vous devez le créer en tant que point lon/lat, puis le transformer, de sorte que votre fonction de distance ressemblerait à ceci :

ST_Distance(geom, ST_Transform(ST_SetSRID(ST_MakePoint(5.112472, 52.008417),4326),28992))

Calcul de la coordonnée x, y d'une distance définie entre deux points

J'essaie de calculer les coordonnées x et y qui sont une distance définie entre les coordonnées de deux pixels dans une image.

Par exemple, si je voyage de mon emplacement d'origine (x1=4, y1=3) vers un nouvel emplacement (x2=4, y2=11), il est assez simple de calculer que ces points sont distants de 8 pixels :

Cependant, j'ai du mal à déterminer la coordonnée qui est de 2 pixels le long de ce chemin. Je sais que dans ce cas, la réponse devrait être x=4, y=5, mais je n'arrive pas à comprendre comment procéder. La plupart des équations que j'ai examinées sur l'interpolation nécessitent que vous connaissiez la coordonnée x ou y que vous recherchez, et trouver la coordonnée médiane n'aide pas beaucoup non plus.

ÉDITER Merci Arpan pour votre aide incroyable, c'est ainsi que j'ai implémenté votre suggestion en Python. J'ai également calculé le point médian pour vérifier que la réponse était correcte :

Édition finale Je viens de réaliser que l'angle devait être en radians, PAS en degrés, je le convertissais en degrés mais je me retrouvais avec des réponses étranges, qui ont été modifiées maintenant et semblent bien fonctionner. Merci pour votre aide!

Édition finale finale J'ai oublié de vérifier si les points sur le même axe x ou y étaient positifs ou négatifs.


Convertir &ldquogeometric&rdquo en &ldquogeography&rdquo

Je suis sur un projet test pour découvrir les outils de géolocalisation. Mais étant néophyte, quelques concepts dans PostGIS m'échappent. Voici mon problème : Le SRID utilisé était 4326. J'ai trois champs : Le champ "geocenter" dans lequel je stocke le centre de mes cercles, le champ "georadius" dans lequel je stocke les rayons des cercles et le champ "geocircle" dans lequel sont cercles stockés qui ne sont en réalité que des polygones. En utilisant le ST_Buffer, je remarque que certains des sommets de mes polygones (cercles) dépassent la plage [-180 -90 180 90]. Mon souci est de calculer la distance d'un point extérieur au cercle à partir du cercle. ST_Distance en utilisant ces polygones de types géométriques, je trouve que la distance calculée est fausse. Je pensais alors utiliser un CAST mais j'ai cette erreur : les valeurs de coordonnées sont hors limites [-180 -90 180 90] pour le type GEOGRAPHIE. S'il vous plaît, existe-t-il un moyen de convertir ces données "géométriques" en données "géographiques" bien que les points soient en dehors de la plage [-180 -90 180 90] ? Je vous remercie


4.3. Type de données géographiques

Le type de données géographiques PostGIS fournit un support natif pour les entités spatiales représentées sur des coordonnées "géographiques" (parfois appelées coordonnées "géodétiques", ou "lat/lon", ou "lon/lat"). Les coordonnées géographiques sont des coordonnées sphériques exprimées en unités angulaires (degrés).

La base du type de données géométriques PostGIS est un plan. Le chemin le plus court entre deux points du plan est une ligne droite. Cela signifie que les calculs sur les géométries (surfaces, distances, longueurs, intersections, etc.) peuvent être calculés à l'aide de mathématiques cartésiennes et de vecteurs linéaires.

La base du type de données géographiques PostGIS est une sphère. Le chemin le plus court entre deux points de la sphère est un grand arc de cercle. Cela signifie que les calculs sur les géographies (surfaces, distances, longueurs, intersections, etc.) doivent être calculés sur la sphère, en utilisant des mathématiques plus compliquées. Pour des mesures plus précises, les calculs doivent tenir compte de la forme sphéroïdale réelle du monde.

Parce que les mathématiques sous-jacentes sont beaucoup plus compliquées, il y a moins de fonctions définies pour le type géographie que pour le type géométrie. Au fil du temps, à mesure que de nouveaux algorithmes sont ajoutés, les capacités du type géographique s'étendront.

Il utilise un type de données appelé géographie . Aucune des fonctions GEOS ne prend en charge le type géographie. En guise de solution de contournement, vous pouvez effectuer des conversions entre les types de géométrie et de géographie.

Avant PostGIS 2.2, le type de géographie ne prenait en charge que WGS 84 long lat (SRID:4326). Pour PostGIS 2.2 et versions ultérieures, n'importe quel système de référence spatiale basé sur la longueur/la latitude défini dans la table spatial_ref_sys peut être utilisé. Vous pouvez même ajouter votre propre système de référence spatial sphéroïdal personnalisé tel que décrit dans le type de géographie n'est pas limité à la terre.

Quel que soit le système de référence spatiale que vous utilisez, les unités renvoyées par la mesure (ST_Distance, ST_Length, ST_Perimeter, ST_Area) et pour l'entrée de ST_DWithin sont en mètres.

Le type géographie utilise le format de définition typmod PostgreSQL afin qu'une table avec un champ géographie puisse être ajoutée en une seule étape. Tous les formats OGC standard, à l'exception des courbes, sont pris en charge.

4.3.1. Bases de la géographie

Le type de géographie ne prend pas en charge les courbes, les TINS ​​ou les POLYHEDRALSURFACEs, mais d'autres types de géométrie sont pris en charge. Les données de type géométrie standard seront automatiquement diffusées en géographie si elles sont du SRID 4326. Vous pouvez également utiliser les conventions EWKT et EWKB pour insérer des données.

POINT : créer une table avec une géographie de points 2D lorsque le srid n'est pas spécifié est défini par défaut sur 4326 WGS 84 long lat :

POINT : Création d'un tableau avec une géographie de points 2D dans le longlat NAD83 :

Création d'une table avec le point de coordonnée z et spécification explicite du srid

Les champs géographiques sont enregistrés dans la vue système Geographic_columns.

Maintenant, vérifiez la vue "geography_columns" et voyez que votre table est répertoriée.

Vous pouvez créer une nouvelle table avec une colonne GEOGRAPHY en utilisant la syntaxe CREATE TABLE.

Notez que la colonne location a le type GEOGRAPHY et que le type géographie prend en charge deux modificateurs facultatifs : un modificateur de type qui restreint le type de formes et de dimensions autorisées dans la colonne un modificateur SRID qui restreint l'identifiant de référence de coordonnées à un nombre particulier.

Les valeurs autorisées pour le modificateur de type sont : POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON. Le modificateur prend également en charge les restrictions de dimensionnalité via des suffixes : Z, M et ZM. Ainsi, par exemple, un modificateur de 'LINESTRINGM' n'autoriserait que les chaînes de ligne à trois dimensions et traiterait la troisième dimension comme une mesure. De même, 'POINTZM' s'attendrait à des données en quatre dimensions.

Si vous ne spécifiez pas de SRID, le SRID sera par défaut 4326 WGS 84 long/lat sera utilisé, et tous les calculs se poursuivront en utilisant WGS84.

Une fois que vous avez créé votre table, vous pouvez la voir dans la table GEOGRAPHY_COLUMNS :

Vous pouvez insérer des données dans la table de la même manière que si elle utilisait une colonne GEOMETRY :

La création d'un index fonctionne de la même manière que GEOMETRY. PostGIS notera que le type de colonne est GEOGRAPHY et créera un index basé sur une sphère approprié au lieu de l'index planaire habituel utilisé pour GEOMETRY.

Les fonctions de requête et de mesure utilisent des unités de mètres. Ainsi, les paramètres de distance doivent être exprimés en mètres et les valeurs de retour doivent être attendues en mètres (ou mètres carrés pour les zones).

Vous pouvez voir la puissance de GEOGRAPHY en action en calculant à quelle distance un avion volant de Seattle à Londres (LINESTRING(-122.33 47.606, 0.0 51.5)) arrive à Reykjavik (POINT(-21.96 64.15)).

Tester différents projets lon/lat. Tout système de référence spatiale longue latitude répertorié dans la table spatial_ref_sys est autorisé.

Le type GEOGRAPHIE calcule la vraie distance la plus courte sur la sphère entre Reykjavik et la trajectoire de vol en grand cercle entre Seattle et Londres.

Mapper Great Circle Le type GEOMETRY calcule une distance cartésienne insignifiante entre Reykjavik et le chemin en ligne droite de Seattle à Londres tracé sur une carte plate du monde. Les unités nominales du résultat peuvent être appelées "degrés", mais le résultat ne correspond à aucune véritable différence angulaire entre les points, donc même les appeler "degrés" est inexact.

4.3.2. Quand utiliser le type de données Géographie

Le type de données géographie vous permet de stocker des données en coordonnées longitude/latitude, mais à un coût : il y a moins de fonctions définies sur GEOGRAPHY que sur GEOMETRY ces fonctions qui sont définies prennent plus de temps CPU à exécuter.

Le type de données que vous choisissez doit être déterminé par la zone de travail attendue de l'application que vous créez. Vos données couvriront-elles le globe ou une grande zone continentale, ou sont-elles locales à un état, un comté ou une municipalité ?

Si vos données sont contenues dans une petite zone, vous constaterez peut-être que choisir une projection appropriée et utiliser la GÉOMÉTRIE est la meilleure solution, en termes de performances et de fonctionnalités disponibles.

Si vos données sont mondiales ou couvrent une région continentale, vous constaterez peut-être que GEOGRAPHY vous permet de créer un système sans avoir à vous soucier des détails de projection. Vous stockez vos données en longitude/latitude, et utilisez les fonctions qui ont été définies sur GEOGRAPHY.

Si vous ne comprenez pas les projections, que vous ne voulez pas en savoir plus et que vous êtes prêt à accepter les limitations des fonctionnalités disponibles dans GEOGRAPHY, il peut être plus facile pour vous d'utiliser GEOGRAPHY que GEOMETRY. Chargez simplement vos données en longitude/latitude et partez de là.

Reportez-vous à la Section 15.11, « Matrice de prise en charge des fonctions PostGIS » pour comparer ce qui est pris en charge pour la géographie et la géométrie. Pour une brève liste et une description des fonctions de géographie, reportez-vous à la Section 15.4, « Fonctions de support de géographie de PostGIS »

4.3.3. FAQ avancée sur la géographie

Calculez-vous sur la sphère ou le sphéroïde ?

Par défaut, tous les calculs de distance et de surface sont effectués sur le sphéroïde. Vous devriez constater que les résultats des calculs dans les zones locales correspondent aux résultats planaires locaux dans de bonnes projections locales. Sur de plus grandes surfaces, les calculs sphéroïdaux seront plus précis que n'importe quel calcul effectué sur un plan projeté.

Toutes les fonctions géographiques ont la possibilité d'utiliser un calcul de sphère, en définissant un paramètre booléen final sur 'FALSE'. Cela accélérera quelque peu les calculs, en particulier pour les cas où les géométries sont très simples.

Qu'en est-il de la ligne de date et des pôles ?

Tous les calculs n'ont aucune conception de ligne de date ou de pôles, les coordonnées sont sphériques (longitude/latitude) donc une forme qui traverse la ligne de date n'est, d'un point de vue calcul, pas différente de toute autre forme.

Quel est l'arc le plus long que vous puissiez traiter ?

Nous utilisons des arcs de grand cercle comme "ligne d'interpolation" entre deux points. Cela signifie que deux points sont en fait reliés de deux manières, selon la direction dans laquelle vous vous déplacez le long du grand cercle. Tout notre code suppose que les points sont reliés par le *plus court* des deux chemins le long du grand cercle. Par conséquent, les formes qui ont des arcs de plus de 180 degrés ne seront pas correctement modélisées.

Pourquoi est-il si lent de calculer la zone Europe / Russie / insérer une grande région géographique ici ?

Parce que le polygone est tellement énorme ! Les grandes zones sont mauvaises pour deux raisons : leurs limites sont énormes, donc l'index a tendance à extraire l'entité quelle que soit la requête que vous exécutez, le nombre de sommets est énorme et les tests (distance, confinement) doivent parcourir la liste des sommets au moins une fois et parfois N fois (avec N étant le nombre de sommets dans l'autre élément candidat).

Comme avec GEOMETRY, nous vous recommandons, lorsque vous avez de très grands polygones, mais que vous effectuez des requêtes sur de petites zones, de "dénormaliser" vos données géométriques en morceaux plus petits afin que l'index puisse effectivement sous-interroger des parties de l'objet et que les requêtes n'aient pas pour retirer l'objet entier à chaque fois. Veuillez consulter la documentation de la fonction ST_Subdivide. Ce n'est pas parce que vous *pouvez* stocker toute l'Europe dans un polygone que vous *devriez*.


Trouver la distribution marginale, sphère unité

On me demande de trouver la distribution marginale de $(X,Y)$ car $(X,Y,Z)$ est un point choisi uniformément sur la sphère unité.

J'ai découvert que la fonction de densité conjointe $f_(x,y,z) = frac<3><4pi>$ pour $x^2+y^2+z^2 leq 1.$

Je sais comment trouver la distribution marginale lorsqu'il s'agit de 2 dimensions, mais je ne sais pas comment configurer les intégrales dans ce cas.

Serait-ce la bonne façon de procéder,

ou est-ce que je calcule vraiment la distribution marginale de $F_X(x)$ si je fais ça ?

De plus, j'ai du mal à comprendre la différence entre trouver la fonction de densité et la fonction de distribution dans des cas comme celui-ci. Pour moi, cela semble être la même méthode pour les deux fonctions?


2 réponses 2

Je pense que vous vous trompez. ST_Distance_Sphere calcule la ST_Distance et renvoie le résultat après avoir converti les radians en unités de rayon sur une sphère de rayon.

Les calculs utilisent une terre sphérique et un rayon configurable. L'argument optionnel radius doit être exprimé en mètres. S'il est omis, la valeur par défaut le rayon est de 6 370 986 mètres. Une erreur ER_WRONG_ARGUMENTS se produit si l'argument rayon est présent mais pas positif.

  • a = ST_Distance( POINT(0,0), POINT(0,1) ) . Cela signifie a=1 .
  • r = 6370986 mètres
  • pi = 3,141593 ish. Utiliser pi() ici

Ainsi, votre appel à ST_Distance_Sphere( Point(0,0), Point(0,1) ) est le même comme,

Ainsi, comme vous pouvez le voir, ST_Distance_Sphere est une distance cartésienne utilisant une géométrie de base pour atteindre une distance de sphère. Cela fait cela pas un bug. en fait, PostGIS renverra les mêmes résultats.

Dans MySQL, ce n'est pas une fonction SIG. C'est une fonction de géométrie, on pourrait dire que MySQL ne prend pas du tout en charge les SIG car il n'utilise même pas les systèmes de référence spatiale dans ses calculs. Il ne fait aucune hypothèse sur une projection ellipsoïdale ou un système de référence spatiale.


Déterminer les valeurs aberrantes à l'aide de l'IQR ou de l'écart type ?

Pour le projet sur lequel je travaille, les valeurs aberrantes doivent être déterminées par rapport aux résidus des données d'élevage. Nous voulons supprimer les données qui sont probablement causées par une entrée erronée. Toutes les valeurs correctes sont précieuses, nous voulons donc minimiser le risque de les perdre. Après la détection des valeurs aberrantes, les données seront envoyées aux personnes qui recherchent les valeurs aberrantes qui se situent juste en dehors des limites.

Lors de la recherche sur Google pour déterminer les valeurs aberrantes, il montre comment déterminer les valeurs aberrantes à l'aide de l'intervalle inter quartile (IQR). Cependant, mon superviseur et les autres personnes qui devront travailler avec les données après avoir effectué l'analyse n'ont aucun « sens » pour cette méthode. Ils sont habitués à travailler avec l'écart type et ont un « sentiment » pour cela.

Je me demande si nous devrions calculer les limites en utilisant un multiplicateur de l'écart type ou utiliser la plage interquartile. Je devrai être en mesure de justifier mon choix.

La façon habituelle de déterminer les valeurs aberrantes consiste à calculer une clôture supérieure et inférieure avec l'intervalle interquartile (IQR). Cela se fait comme suit :

Le calcul des limites à l'aide de l'écart type se ferait comme suit :

Mettre à jour comment nous l'avons fait

Nous avons opté pour la méthode de l'écart type, si des valeurs aberrantes extrêmes sont trouvées, par exemple par des fautes de frappe. Ils sont corrigés en modifiant ou en supprimant leurs observations et en exécutant à nouveau l'analyse.

Edit : Ou la méthode MAD serait-elle meilleure pour déterminer les valeurs aberrantes ?

Edit2, informations supplémentaires sur mes données pour Kjetil

J'ai des données d'élevage, par exemple je m'en tiendrai au gain journalier.
L'objectif des données collectées est d'obtenir plus d'informations sur les porcs et de prédire quelles lignées pourraient être bonnes pour la reproduction future.

Actuellement, il existe des filtres de base qui sont appliqués avant que les données ne soient mises dans la base de données, ceux-ci représentent les pires fautes de frappe. Cependant, il y a beaucoup de données, disons qu'un cochon grandit 48 kilogrammes, cela ne semble pas étrange. Bien que si vous réalisez que ce n'était dans une ferme que pendant quelques jours, vous trouvez soudain que c'est impossible.

J'effectue une régression linéaire sur le gain quotidien, puis je souhaite établir des valeurs aberrantes sur les résidus et les marquer comme ne répondant pas aux exigences. Ce que j'entends par valeurs aberrantes : données impossibles ou hautement improbables, causées par une mauvaise mesure ou une entrée erronée

L'entreprise pour laquelle je travaille estime les valeurs d'élevage en fonction de nombreux caractères différents. Actuellement, les données sont prétraitées par certaines limites et protocoles. Ces limites sont par exemple un min de 0kg et un max de 999kg pour le poids d'un cochon. Je ne connais pas grand chose aux protocoles. Je crois que l'un d'entre eux est la date de la première et de la dernière mesure d'un porc qui doit se situer entre 60 et 90 jours l'une de l'autre. La tâche qui m'a été confiée est d'utiliser des modèles statistiques pour obtenir une liste de résidus. Pour ces résidus, je dois déterminer les valeurs aberrantes pour supprimer les points de données erronés. Nous ne voulons pas que les données générées par l'erreur humaine influencent le processus de détermination des valeurs d'élevage. Exemple : les porcs grandissent en moyenne de 900 grammes par jour. Le porc A grandit de 1450 grammes par jour, il y a un écart de 50 grammes qui peut s'expliquer par le sexe, 150 grammes par la lignée de reproduction et 100 autres par d'autres facteurs. Cela laisse un gain quotidien de 225 grammes que nous ne pouvons pas expliquer directement. Le porc A obtiendrait une valeur d'élevage positive pour le gain quotidien du trait. Ces détails sont intéressants pour mon entreprise.

Ce sont les valeurs aberrantes actuelles pour le gain quotidien du trait. La ligne bleue est 3,5 fois l'intervalle interquartile au-dessus de Q3, la ligne rouge est 1,5 fois l'intervalle interquartile soustrait de Q1. Remarque : Après une discussion avec mon superviseur, nous avons convenu que la plage en bas et en haut doit être la même. Car le but n'est pas seulement d'obtenir les meilleurs porcs, mais aussi les moins productifs. L'ensemble de données doit être aussi complet que possible. J'ai changé cela dans ma dernière version.

Voici un tracé qqnorm () du même ensemble de données que le tracé ci-dessus

Les données appartenant aux deux graphiques ci-dessus, comme vous pouvez le voir, il y a 1327 valeurs aberrantes de clôture inférieure et 1000 :


Mdhntd

Pourquoi les tapis volants sont-ils interdits alors que les balais volants ne le sont pas ?

Est-il possible de faire carrière dans SciComp sans contribuer à la recherche sur les armes ?

"Je suis petite, moi?", but du "moi" ?

Comment automatiser ce calcul de tenseur ?

Le directeur me demande de prendre le petit déjeuner à partir de maintenant

Modification de la variable d'itération dans la boucle Do

Comment envoyer de l'argent quand on n'est pas sûr qu'il ne s'agisse pas d'une arnaque ?

Quelle est l'importance de l'humeur et des sentiments de l'auteur pour l'écriture d'une histoire ?

Puis-je utiliser un vélocipède ferroviaire sur les chemins de fer britanniques activement utilisés ?

Le chiffrement est-il toujours appliqué si vous ignorez l'avertissement de certificat SSL pour les certificats auto-signés ?

Comment J. J. Thomson a-t-il établi la nature particulaire de l'électron ?

Pourquoi les chiffres d'un nombre au carré suivent-ils un quotient similaire ?

Pourquoi une molécule tétraédrique comme le méthane a-t-elle un moment dipolaire nul ?

Pourquoi le docteur Strange n'a-t-il pas restauré Tony Stark après avoir utilisé les Stones ?

Ce téléphone Android est-il Android 9.0 ou Android 6.0 ?

Amélioration d'une fonction O(N^2) (toutes les entités itérant sur toutes les autres entités)

Pourquoi les humains ne perçoivent-ils pas les ondes à deux fois leur fréquence ?

"C'était mon numéro de téléphone"

Pourquoi est-ce que je n'entends pas le bourdonnement des frettes à travers l'ampli ?

Pourquoi Google s'approche de ma machine VPS ?

Comment sélectionner tous les points à l'intérieur d'un polygone dans PostGIS ?

Sélectionner des points en double PostGISComment sélectionner tous les points dans un cercle dans PostGIS ?Générer des points aléatoires dans un polygone. Question d'algorithmePostgre/PostGIS - Comment trouver des points à l'intérieur d'une zoneTrouver tous les polygones à l'intérieur d'un polygoneInsérer des points dans PostGIS à l'aide d'une fonctionComment vérifier qu'un ensemble de points est à l'intérieur d'un polygone ou non dans postgis ? les par une caractéristique commune python psycopg2 insérer une table dans postgis: la géométrie nécessite plus de pointsDéplacer des points à l'intérieur vers un polygone à l'aide de PostGIS?

J'ai une table samplecol qui contient (un exemple):

J'essaie de récupérer tous les points à l'intérieur du polygone avec :

poisInpolygon = """SELECT échantilloncol.latitude, échantilloncol.longitude
À PARTIR de l'échantilloncol

ST_Contient(samplecol.the_geom,('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, 38.0566406 47.6357836,-15.0292969 47.6357836))')"""
curseur.execute(poisInpolygon)

existe1 = curseur.fetchall()
compte1 = 0
pour ex1 dans existe1 :
compte1 = compte1+1
imprimer ex1, "n"
imprimer "points", compter1

Mais cela ne renvoie aucun résultat bien que je sache qu'à l'intérieur de ce polygone, de nombreux points existent.

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin 18 à 9:45

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01 596 985), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.

J'ai une table samplecol qui contient (un exemple):

J'essaie de récupérer tous les points à l'intérieur du polygone avec :

poisInpolygon = """SELECT échantilloncol.latitude, échantilloncol.longitude
À PARTIR de l'échantilloncol

ST_Contient(samplecol.the_geom,('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, 38.0566406 47.6357836,-15.0292969 47.6357836))')"""
curseur.execute(poisInpolygon)

existe1 = curseur.fetchall()
compte1 = 0
pour ex1 dans existe1 :
compte1 = compte1+1
imprimer ex1, "n"
imprimer "points", compter1

Mais cela ne renvoie aucun résultat bien que je sache qu'à l'intérieur de ce polygone, de nombreux points existent.

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin 18 à 9:45

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01529696), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.

J'ai une table samplecol qui contient (un exemple):

J'essaie de récupérer tous les points à l'intérieur du polygone avec :

poisInpolygon = """SELECT échantilloncol.latitude, échantilloncol.longitude
À PARTIR de l'échantilloncol

ST_Contient(samplecol.the_geom,('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, 38.0566406 47.6357836,-15.0292969 47.6357836))')"""
curseur.execute(poisInpolygon)

existe1 = curseur.fetchall()
compte1 = 0
pour ex1 dans existe1 :
compte1 = compte1+1
imprimer ex1, "n"
imprimer "points", compter1

Mais cela ne renvoie aucun résultat bien que je sache qu'à l'intérieur de ce polygone, de nombreux points existent.

J'ai une table samplecol qui contient (un exemple):

J'essaie de récupérer tous les points à l'intérieur du polygone avec :

poisInpolygon = """SELECT échantilloncol.latitude, échantilloncol.longitude
À PARTIR de l'échantilloncol

ST_Contient(samplecol.the_geom,('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, 38.0566406 47.6357836,-15.0292969 47.6357836))')"""
curseur.execute(poisInpolygon)

existe1 = curseur.fetchall()
compte1 = 0
pour ex1 dans existe1 :
compte1 = compte1+1
imprimer ex1, "n"
imprimer "points", compter1

Mais cela ne renvoie aucun résultat bien que je sache qu'à l'intérieur de ce polygone, de nombreux points existent.

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin '18 à 9:45

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01529696), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin 18 à 9:45

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01 596 985), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

Vous devez définir le SRID de votre enveloppe de recherche sur 4326 et vous devez explicitement convertir la représentation WKT en une géométrie, c'est-à-dire ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836. -15.0292969 47.6357836))'). Pour être honnête, je suis surpris que vous n'obteniez pas d'erreur selon laquelle aucune fonction n'existe ST_Contains(geom, text), bien que d'après votre extrait de code, vous n'ayez peut-être pas de gestionnaire d'erreurs autour de l'appel de fonction.

– John Powell
3 juin 18 à 9:37

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin 18 à 9:45

vous voulez dire quelque chose comme : ST_Contains(samplecol.the_geom,(ST_GeomFromEWKT('SRID=4326 'POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.3821751, 35.0683594 26.1159859, ? ?

– Telperinquar
3 juin 18 à 9:45

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01529696), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Pouvez-vous s'il vous plaît fournir la requête complète? Je ne peux pas le comprendre. J'essaie ceci: poisInpolygon = """SELECT col.vessel_hash,col.longitude,col.latitude de sampelcol as col, ST_Contains(ST_GeomFromEWKT('POLYGON((-15.0292969 47.6357836,-15.2050781 47.5172007,-16.2597656 29.380635959451, 385.01529696), 47.6357836,-15.0292969 47.6357836))'), ST_GeomFromEWKT(col.the_geom)) FROM samplecol As col""" mais renvoie : (103079215291L, Decimal('40.87011000'), Decimal('29.20170000'), False) . Pourquoi renvoie Faux ?

– Telperinquar
3 juin 18 à 10:32

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Veuillez modifier la question en réponse aux demandes de clarification. Ce n'est pas juste pour ceux qui répondraient d'analyser les commentaires. Peut-être que si vous écrivez lisiblement le SQL, vous remarquerez l'erreur de construire une géométrie à partir d'une géométrie.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.

Bien que vous deviez créer une géométrie PostGIS à partir de la présentation WKT de votre polygone de référence, votre table "samplecol" contient déjà des géométries PostGIS et ST_GeomFromEWKT(col.the_geom) n'a aucun sens. col.the_geom est ce dont vous avez besoin.


Vous tracez une ligne de $(2,1,3)$ au centre de la sphère $(0,0,0)$. La ligne rencontre la sphère en deux points. L'un est la distance minimale et l'autre est la distance maximale. Comme la distance de $(0,0,0)$ à un point quelconque de la sphère est de 1$, la distance maximale est

WLOG tout point de la sphère $(cos u,sin ucos t,sin usin t)$

$D^2=(cos u-2)^2+(sin ucos t-1)^2+(sin usin t-3)^2$

$2^2+1^2+3^2+cos^2u+sin^2u(cos^2t+sin^2t)-4cos u-2sin u(cos t+3sin t) $

$=2^2+1^2+3^2+cos^2u+sin^2u-4cos u-2sin u(cos t+3sin t)$

$implies-sqrt<10>lecos t+3sin tlesqrt<10>$

$implies-2sqrt<10>|sin u|le-2sin u(cos t+3sin t)le2sqrt<10>|sin u|$


La nomenclature prête à confusion et des études récentes ont montré que parmi les basaltes de la dorsale médio-océanique (généralement appelés MORB), les basaltes normaux de la dorsale médio-océanique (NMORB) devraient refléter la composition statistiquement habituelle tandis que le MORB amélioré (EMORB) et le MORB appauvri (DMORB) devraient reflètent les membres finaux de la population MORB. Gale et. al 2013 propose l'utilisation du terme NMORB pour désigner la composition de basalte la plus probable rencontrée le long du système mondial de crêtes éloigné des points chauds. Le NMORB est donné par la moyenne lognormale des compositions des segments de crête à plus de 500 km des panaches hors arcs arrière. Contrairement à certaines discussions dans la littérature, les NMORB ne sont PAS appauvris en oligo-éléments selon le travail de Gale et donc le lien entre l'idée d'épuisement et les NMORB devrait être rompu.

Gale et.al proposent le terme DMORB pour reconnaître les basaltes appauvris en oligo-éléments. Les DMORB ne seraient pas considérés comme représentatifs du manteau supérieur ou de la croûte océanique et ne seraient pas non plus couramment trouvés dans les systèmes de crêtes. Enfin, EMORB ferait référence à des NMORBS enrichis en oligo-éléments incompatibles via une définition statistique trouvée dans Gale et. Al. Cette définition statistique est due au fait que les données actuelles ne permettent pas un lien spatial clair des EMORB avec une forme particulière de système de crête ou de panache ou d'île située à proximité des deux.

Un bon exemple d'un système EMORB est donné par l'Islande où le taux de production de magma a causé le volcanisme à construire la dorsale océanique au-dessus du niveau de la mer. In this environment, the predominant basalts are also tholeiitic basalts, but there are higher concentrations of incompatible trace elements. EMORBs are enriched in incompatible trace elements such as K, Ba, La, Rb compared to NMORBs. By incompatible, one means elements that do not fit easily into the crystal structure of mineral elements in the mantle and are usually not found in upper mantle derived rocks because they are preferentially ejected into the melt.

Generally, all MORBs are tholeiitic basalts occurring in oceanic spreading centers, such as an ocean ridge away from hot spots and back-arc basins. At these spreading centers, a relatively small range of chemical compositions of basalts are erupted to form the basaltic layer of the oceanic crust. The main melting mechanism is likely decompression melting due to rising convection cells moving upward through the mantle beneath the ridges. The composition of these basalts typically ranges from olivine to quartz tholeiites. Tholeiitic magmas are sub-alkaline, meaning they contain less sodium and potassium than other basalts and can be distinguished from other basalts by the redox state of the magma from which they crystallized—- tholeiitic parent magmas are reduced whereas calc-alkaline parent magmas are oxidized. All three NMORBS, DMORBS, and EMORBS share common chemical compositions (ordered by decreasing wt%) of SiO2, Al2O3, MgO, FeO, CaO. They also share a common mineralogy of plagioclase, pyroxene and olivine. The plutonic equivalents to a tholeiitic basalt are diorite, gabbro, and anorthosite.

For the next section, this is a great reference!

Oceanic Island Basalts –basalts associated with islands in the ocean basins that generally occur away from plate boundaries, and are often associated with hot spots. Most oceanic islands appear to be related to ascending plumes of hot mantle which operate independent of the main convection cells that ascend beneath ocean ridges and descend at subduction zones. A wide variety of rocks occur in these islands, not all are basaltic, but all appear to be related to upper mantle melts. One may find tholeiites, alkaline basalts, Hawaiites, trachytes and rhyolites in an OIB environment which span the compositional spectrum of magnesium, iron and the alkaline elements. From a melting perspective, low pressure environments tend to produce the tholeiitic magmas and high pressures are required to derive alkali basalts. OIB mantle sources are enriched in incompatible elements and demonstrate a wider variety fractionization than MORBs. How does this occur? a recent theory for OIB sources posits that subducted lithosphere sinks to the core/mantle boundary and mixes with the mantle to produce an enriched mantle which heats and rises in narrow plumes which channel this enriched mantle melt upward producing hotspots which produce the compositional variety of OIBs observed.