Suite

Comment gérer les chevauchements multiples dans PostGIS ?

Comment gérer les chevauchements multiples dans PostGIS ?


Je me bats contre ça depuis assez longtemps et à chaque fois que je pense que j'ai compris, je me suis trompé en fait.

Quel est le problème

Voir l'image ci-dessous. En raison des tampons de ligne, j'ai eu des chevauchements qui doivent être supprimés aux extrémités des tampons. Je cherche un moyen de dire à PostGIS quels chevauchements doivent être différents de quel tampon. Je me suis retrouvé plusieurs fois avec des polygones topologiques incorrects.

Si vous le souhaitez, prenez la décharge de table.

J'obtiens tous les chevauchements avec cette requête :

SELECT DISTINCT (ST_Dump(ST_Intersection(a.geom, ST_Union(b.geom)))).geom geom FROM test a, test b WHERE a.geom && b.geom AND ST_Intersects(a.geom, b.geom) AND NOT ST_Equals(a.geom, b.geom) GROUP BY a.geom

Aucune idée de comment procéder.

METTRE À JOUR Je dois supprimer les chevauchements pour que les tampons se fassent parfaitement face sans espace blanc. Par exemple. si deux tampons se chevauchent, la portion d'espace qui se chevauche doit être supprimée uniquement de l'un de ces deux.


Ma sale solution de force brute

FAIRE $$ DECLARE r entrée; COMMENCER POUR r IN SELECT * FROM input LOOP SI EXISTE (SELECT 1 FROM output WHERE output.wkb_geometry && r.wkb_geometry) ALORS r.wkb_geometry := ST_Multi(ST_CollectionExtract(ST_Difference(r.wkb_geometry, ST_geometry.wkb (output.wkb) )) FROM sortie O sortie.wkb_geometry && r.wkb_geometry; FIN SI; INSERT INTO valeurs de sortie (r.*); FIN DE BOUCLE ; FIN $$

~

Il y a un lien https://boundlessgeo.com/2014/10/postgis-training-creating-overlays/ pour une jolie solution de Paul Ramsey.


Requête du voisin le plus proche dans PostGIS

J'utilise la requête de voisin le plus proche suivante dans PostGIS :

Maintenant que j'ai créé des index sur the_geom ainsi que la colonne gid sur les deux tables, cette requête prend beaucoup plus de temps que les autres requêtes spatiales impliquant des jointures spatiales entre deux tables.

Existe-t-il un meilleur moyen de trouver les voisins K les plus proches ? J'utilise PostGIS.

Et, une autre requête qui prend un temps inhabituellement longue malgré la création d'index sur la colonne de géométrie est :

Je crois que ces requêtes ne bénéficient pas des index essentiels, mais pourquoi ?

renvoie le résultat après un certain temps malgré la table "routes" qui est beaucoup plus grande que la table des polygones ou des points et implique également des opérateurs spatiaux plus complexes.


Causes des handicaps multiples

Avoir des handicaps multiples signifie qu'une personne a plus d'un handicap. Qu'est-ce qui a causé les handicaps? Souvent, personne ne sait.

Chez certains enfants, cependant, la cause est connue. Par exemple, les handicaps de Sharon ont été causés par un manque d'oxygène à la naissance. D'autres causes peuvent inclure:

  • Anomalies chromosomiques
  • Naissance prématurée
  • Difficultés après la naissance
  • Mauvais développement du cerveau ou de la moelle épinière
  • Infections
  • Les troubles génétiques
  • Blessures par accident (1)

Quelle qu'en soit la cause, il en résulte que l'enfant est polyhandicapé. Heureusement, de l'aide est disponible. Continuez à lire pour en savoir plus.


1 réponse 1

Ce sont toutes des attaques très anciennes. A l'exception d'un simple ping flood, vous ne pouvez même pas essayer pour les exécuter en utilisant la dernière version d'Ubuntu, car elle n'est pas affectée. Vous devrez télécharger une ancienne copie non corrigée d'un système d'exploitation vulnérable tel que Windows 95.

Le Ping-of-Death consiste à envoyer une requête ICMP mal formée à un ordinateur qui se bloque en conséquence. Il s'agit d'une véritable vulnérabilité DoS conduisant à un crash, et non d'une attaque traditionnelle basée sur la bande passante. Elle n'affecte que les systèmes très anciens qui y sont vulnérables. En fait, l'original datait de 1997 et concernait Windows 95 et plusieurs autres systèmes contemporains. Toute vulnérabilité dans la pile réseau d'un système qui permet à une requête ICMP de faire planter le système peut être classée ici.

Une attaque en forme de larme consiste à abuser de la fragmentation IP avec des charges utiles surdimensionnées et qui se chevauchent. Lorsque les données IP sont fragmentées (généralement pour prendre en charge les routeurs qui ne peuvent pas gérer de grandes charges utiles IP), elles contiennent des informations indiquant au système de destination comment les réassembler. Si ces informations sont corrompues de sorte qu'elles spécifient un chevauchement impossible, cela peut entraîner le blocage d'anciens systèmes non conçus pour gérer cela. Les anciens systèmes d'exploitation tels que, encore une fois, Windows 95 et les très anciens systèmes Linux étaient vulnérables à cela. Depuis lors, de telles attaques basées sur la fragmentation ont cessé d'être pertinentes. Les systèmes modernes traiteront avec élégance les fragments IP incorrectement livrés ou corrompus.

La seule attaque ici que vous pouvez réellement réussir est le ping flood (ICMP flood). Il s'agit d'une attaque très simple n'impliquant rien de plus que l'envoi d'un flot de requêtes ICMP à la cible. Cela ne fonctionne que si le système attaquant dispose de beaucoup plus de bande passante que la victime, auquel cas il ne fait que saturer le réseau et dégrader le service. Cette attaque peut être simulée à l'aide d'outils tels que hping3. Si vous effectuez cette attaque sur un réseau local dans une machine virtuelle, vous devrez peut-être limiter artificiellement la vitesse maximale du réseau, car la mise en réseau de la machine virtuelle est si rapide qu'il est peu probable que vous puissiez générer des requêtes ICMP à un taux suffisamment élevé pour provoquer un refus. de service.


Articles de journaux

Mesure de la pauvreté infantile multidimensionnelle

Pauvreté multidimensionnelle des enfants dans trois pays d'Afrique subsaharienne

Pauvreté multidimensionnelle chez les adolescents dans 38 pays : données probantes de l'étude 2013/14 sur le comportement de santé des enfants d'âge scolaire (HBSC)

Comment atteindre l'objectif de développement durable 1.2 ? Simuler différentes stratégies pour réduire la pauvreté multidimensionnelle des enfants dans deux pays à revenu intermédiaire

Mesurer la pauvreté multidimensionnelle des enfants à l'ère des objectifs de développement durable

Capacité économique des femmes et accumulation du capital humain des enfants

Privation multidimensionnelle des enfants et mesure de la pauvreté : étude de cas de la Bosnie-Herzégovine


2 réponses 2

C'est une bonne question, mais je pense que ce n'est pas seulement lié aux mathématiques, c'est lié à notre processus de mémoire et ça va sous le nom de "théorie de la désintégration". Permettez-moi de citer Wikipedia : la théorie de la décomposition est une théorie qui propose que la mémoire s'estompe en raison du simple passage du temps. L'information est donc moins disponible pour une récupération ultérieure au fil du temps. Lorsqu'un individu apprend quelque chose de nouveau, une "trace de mémoire" neurochimique est créée. Cependant, au fil du temps, cette trace se désintègre lentement.

C'est physiologique. En approfondissant l'étude de la psychologie et des sciences cognitives de la mémoire, on peut trouver des « astuces » pour restaurer périodiquement (il existe en effet des intervalles de temps plus utiles dans lesquels on peut fructueusement rafraîchir certaines connaissances anciennes) des concepts spécifiques qui, jour après jour, mois mois, année après année, deviennent solides et plus faciles à retenir.

Dans l'ensemble, la même difficulté qu'un mathématicien peut rencontrer à se rappeler comment résoudre une équation différentielle linéaire du second ordre ou comment appliquer le théorème de Stoke est la même qu'un historien de l'art peut avoir à se souvenir de la date à laquelle Titien s'est enfui de Venise à cause de la peste ou de la même un philosophe peut trouver en rappelant la subdivision exacte de la Phénoménologie de l'esprit de Hegel. De plus, en conclusion, je vois que pour les mathématiciens c'est, parfois, encore plus facile que d'autres sujets puisque lorsque vous creusez plus profondément dans un domaine, vous avez généralement besoin et utilisez largement des concepts antérieurs : par conséquent, vous les révisez implicitement et - permettez-moi d'ajouter ceci - vous les comprenez de plus en plus à chaque fois.

Même parmi les meilleurs mathématiciens, je parierais qu'il est vraiment rare d'avoir quelqu'un qui maîtrise plus d'un ou deux domaines. Bien sûr, un analyste connaîtrait les bases mêmes de la théorie des groupes et un algébriste peut élaborer une preuve epsilon-delta sans trop de problèmes.

Mais il semble que vous manquez quelque peu l'objectif d'élargir l'enseignement des mathématiques. Je suis moi-même beaucoup plus enclin à l'analyse / aux mathématiques appliquées et je ne peux pas me souvenir des preuves des théorèmes de Sylow à ce stade, même si j'ai suivi une séquence d'algèbre diplômée. Cependant, si cela devient nécessaire pour moi, alors je peux saisir Dummit et Foote et me rafraîchir très rapidement sur les théorèmes de Sylow. De même, un topologue ou un logicien serait aussi très rapidement capable de réapprendre/se souvenir comment calculer le SVD d'une matrice et faire quelques preuves d'algèbre linéaire de base, etc. maturité mathématique vous obtenez grâce aux cours de mathématiques qui vous permettent d'acquérir quelque chose relativement rapidement si besoin est. De temps en temps, j'enseigne le calcul multivariable/calcul vectoriel pour les étudiants en génie et je révise à chaque fois les théorèmes de Stoke/Gauss, div/grad/curls et leurs applications à la physique, etc.

Enfin et surtout, si vous ne dépensez pas plus de 30 $ de minutes sur un problème d'équation différentielle, alors peut-être que vous vous concentrez uniquement sur des problèmes purement informatiques et ne vous embêtez pas à essayer des problèmes plus avancés qui sont en quelque sorte nécessaires pour développer plus d'intuition. Certains problèmes de manuels peuvent et prendront certainement plus de 30 $ de minutes à comprendre et à digérer.


8 réponses 8

Lorsque vous appliquez plusieurs couches d'uréthane, la poussière ou les petits défauts seront amplifiés à chaque nouvelle couche. Si vous voulez la finition la plus lisse possible, attendez qu'il soit sec, poncez très légèrement avec du papier très fin (220 ou plus fin) pour éliminer les éventuelles bosses de poussière, essuyez-le avec un chiffon légèrement humide ou un chiffon doux, laissez sécher ou polissez séchez avec un chiffon sec, puis appliquez la couche suivante. Il n'y a aucune raison d'utiliser des essences minérales, en fait je vous conseillerais de ne pas utiliser d'essences minérales.

Je ne vois aucun avantage à appliquer des couches successives avec, puis à contre-courant. Tant que vous appliquez une couche uniforme avec un pinceau de bonne qualité ou un pinceau en mousse et que vous ne le surmenez pas, les traces de pinceau devraient disparaître. Le produit fini doit être si lisse que vous ne pouvez pas dire de quel côté vous avez appliqué l'uréthane. De plus, si vous utilisez un uréthane au fini satiné, assurez-vous de bien le mélanger, de le remuer et de ne pas le secouer. Les agents ternissants ont tendance à tomber au fond, il est donc important de bien les mélanger. Peu importe le nombre de couches que vous appliquez, il ne doit pas devenir « brillant ».

Tout est question d'adhérence. Lorsque vous recouvrez après 2 heures, vous obtenez une liaison chimique entre les couches. Si vous le laissez aller plus longtemps que cela, vous devez attendre 24 heures pour qu'il soit assez dur de poncer et d'obtenir une liaison mécanique. Je ponce avant la dernière couche. Cela le rend lisse sans risque de ponçage.

Je fais généralement une finition par pulvérisation lorsque je veux avoir un véritable éclat satiné. Je trouve que c'est beaucoup plus facile de gérer l'application quand je cherche un fini Satiné, même si je n'utilise qu'un hochet, surtout pour la couche finale. Je pourrais juste sucer avec un pinceau, mais j'ai tendance à trouver que je laisse soit des coups de pinceau, de minuscules bulles ou des zones d'épaisseur inégale qui apparaissent comme une variante légèrement différente du "satin" lorsque j'utilise un pinceau ou une mousse rouleau. Depuis, j'ai acheté un pistolet HVLP et je l'utilise la plupart du temps lorsque je termine les portes et ainsi de suite.

Si vous utilisez du polyuréthane à base d'huile (PAS le type acrylique/"nettoyer à l'eau"), vous pouvez utiliser de la laine d'acier quad-ought (#0000) au lieu du grain 220. Je trouve la laine d'acier plus facile à gérer. Si vous utilisez la finition à base d'eau, vous pouvez trouver des « tampons de finition » 3M « super-fins » dans la section papier de verre. Ceux-ci, et un chiffon de dépoussiérage SANS les essences minérales (également généralement dans la section du papier de verre), est ce que j'utiliserais entre les couches. Assurez-vous de poncer dans une zone et de peindre dans une autre, car la poussière s'infiltrera dans la finition.

Brillant ou non, une finition lisse est merveilleuse et protège mieux. Surtout sur quelque chose d'aussi abusé qu'un dessus de table. Si les plumes à poussière que vous n'avez pas poncées sont frappées ou rayées à un moment donné, cela peut entraîner un trou jusqu'au bois nu. Une fois que l'humidité pénètre dans un tel trou, eh bien. vous avez manifestement des problèmes.

En supposant que cela vous convainc de lisser votre finition, je pense que vous obtiendrez les meilleurs résultats si vous appliquez dans le sens du grain, attendez un jour entre les couches et poncez toujours légèrement avec un grain fin entre les deux.

Voici ce qui fonctionne bien pour moi. J'aime essuyer sur des vernis dilués pour quatre raisons : il sèche plus rapidement, il est auto-nivelant par rapport à la pleine puissance, il s'essuie rapidement sans autant de traînées et le nettoyage est plus facile car il suffit de laisser sécher les chiffons puis de les jeter. Le nettoyage d'une brosse implique des solvants, des gants, un évier gluant, etc.

Vous pouvez diluer le polyuréthane 50/50 (voire un peu plus) avec de l'essence minérale pour faciliter l'essuyage. Le Wipe-On Poly de Minwax est également un bon choix, bien qu'il soit plus cher d'acheter pré-éclairci. Vous avez besoin de beaucoup plus de couches lorsque vous l'appliquez dilué, mais la construction est plus belle au final. Une règle générale est de 3 couches diluées pour chaque couche que vous auriez appliquée à pleine puissance.

En ce qui concerne 2 heures, j'ai peu confiance en cela. poly est généralement collant pendant un certain temps (même s'il n'est pas visiblement collant au toucher). L'éclaircissement l'aide à sécher plus rapidement, mais il est plus sûr de le laisser sécher au moins une nuit. Si vous le poncez avant qu'il ne soit complètement sec, des marques apparaîtront dans le résultat final. De plus, si la couche inférieure n'est pas complètement sèche et que vous la scellez avec une autre couche, elle ne séchera jamais complètement (car elle nécessite de l'oxygène pour durcir). La température ambiante et l'humidité de l'air affectent également le temps de durcissement, mais 24 heures sont une valeur sûre dans la plupart des climats.

Suivre le sens du grain est une technique au cas où cela est utile pour couvrir les défauts de l'application. Ce n'est généralement pas nécessaire avant la couche finale, mais cela ne fait certainement pas de mal de le faire de toute façon. Surtout si vous n'avez pas d'expérience avec le brossage des vernis, votre technique sera forcément bâclée jusqu'à ce que vous en ayez fait quelques-uns. Ce n'est pas vraiment un problème avec l'essuyage, mais suivre le grain masque les stries qui pourraient se produire si votre chiffon est trop sec et que vous ne le remarquez pas immédiatement. J'essuie toujours dans le sens du grain sur chaque couche car ce n'est pas un travail supplémentaire et j'aime être prudent.

J'aime la sensation de mes finitions lorsque j'applique 3 à 6 couches diluées. Après chaque couche, j'attends 24 heures complètes (je vis dans le nord-ouest froid et humide), puis je ponce légèrement avec du grain 600, enlève la poussière avec un chiffon sec ou une brosse aspirante et fais une autre couche. Parfois, je dilue la couche de finition un peu plus que les autres, puis je fais un ponçage final avec 1500 ou plus pour qu'elle frappe les plumes de poussière mais ne ternisse pas la finition. Ce régime prend des jours bien sûr, mais si vous avez de la patience, votre produit final sera étonnamment lisse et semblera très proche du bois.

Autre règle de base : plus vous poncez le top coat, plus le fini sera terne. Cette astuce est utile si elle est plus brillante que vous ne le souhaitiez (la laine d'acier # 0000 ou un papier abrasif à très fort grain est votre meilleur ami ici). Mais pour entrer dans le stade, choisissez Satin si vous voulez très peu de brillance et choisissez Gloss si vous voulez plus un aspect miroir.

Une mise en garde : ce conseil est basé sur du poly à base d'huile et des bois à grain serré, votre kilométrage peut varier si vous travaillez sur quelque chose avec des pores ouverts (alors vous devez vous soucier des charges de bois et d'autres techniques pour une surface lisse) ou si vous utilisez du poly à base d'eau (alors vous devez vous occuper de la culture du grain et tout ça).

Un excellent livre sur la finition, si vous êtes vraiment intéressé par les techniques, est "Comprendre la finition du bois : comment sélectionner et appliquer la bonne finition" de Bob Flexner. L'un des principaux thèmes est que les instructions sur la finition des conteneurs de produits sont généralement au mieux trompeuses. Mon expérience relativement limitée l'a confirmé.


1 réponse 1

Si vous utilisez un compte pour voter pour l'autre, cela n'est pas autorisé et lorsqu'il sera découvert, un mod fusionnera vos comptes et vous suspendra.

Si par hasard l'existence de vos autres comptes est découverte, ils seront très probablement fusionnés. Il n'y a aucune garantie que vous puissiez le faire et que vos comptes ne seront pas fusionnés sous vous. La majorité des utilisateurs avec plusieurs comptes en ont parce qu'ils ne comprennent pas comment fonctionne le système de compte. Les mods fusionnent régulièrement des comptes, nous ne passons donc pas de temps à confirmer que vous souhaitez les fusionner.

En ce qui concerne "l'esprit" de SO, à moins que vous ne fassiez de la marionnette pour un représentant, c'est bien. Ne soyez pas surpris de constater que vous n'avez qu'un seul compte.


Construction d'un environnement de données pour un environnement géographique virtuel

L'environnement géographique virtuel (VGE) vise à exprimer naturellement le monde réel et à prendre en charge l'analyse géographique complexe. L'environnement de données, fondamental de VGE, devrait prendre en charge les exigences de gestion, d'analyse, de partage et d'application des données spatio-temporelles géographiques complexes et massives. Dans cet article, nous avons résumé les problèmes clés dans la construction de l'environnement de données de VGE. Le modèle de données spatio-temporel unifié et une nouvelle structure de données ont été développés selon les règles géographiques. L'organisation et le mécanisme de stockage compressé de données spatio-temporelles massives ont également été développés. Avec ces fondations, des études de cas, qui intègrent les données à l'échelle mondiale, régionale et urbaine pour opérer une modélisation et une analyse de données complexes, sont réalisées. Les résultats ont montré que la construction de l'environnement de données intégré de VGE peut grandement améliorer l'efficacité de l'analyse SIG, qui fournit également un nouvel outil potentiel pour soutenir l'analyse géographique complexe.

Ceci est un aperçu du contenu de l'abonnement, accessible via votre institution.


comment puis-je utiliser plusieurs clés primaires dans postgres ?

Vous ne pouvez pas. C'est un oxymore - la définition d'une clé primaire est qu'elle est les clé primaire, singulier. Vous ne pouvez pas en avoir plus d'un.

Vous pouvez avoir plusieurs contraintes uniques. Vous pouvez avoir une clé primaire qui contient plusieurs colonnes (une clé primaire composite). Mais vous ne pouvez pas avoir plus d'une clé primaire pour une table.

Cependant, le code que vous montrez ne produit pas l'erreur que vous avez mentionnée :

En fait, vous avez déjà défini cette table et vous ignorez les erreurs précédentes, puis n'affichez que la dernière. Si je réexécute ce code, j'obtiens la sortie :


Pourquoi la virgule ?

Quant à la virgule - c'est juste une syntaxe, une notation - probablement, si l'on concevait SQL à présent, ce ne serait pas le premier choix (ou tout choix) comme moyen de CROSS JOIN tables. Le terme CONCAT JOIN (à la syntaxe Python. ) pourrait être un candidat potentiel (pour un ab initio design) - mais cela semble juste bizarre maintenant que nous (les développeurs SQL/DBA) sommes habitués à CROSS JOIN .

De plus, le séparateur des différents champs d'une requête est une virgule :

Donc, il semblait peut-être (avant mon temps. ) logique de l'utiliser également comme séparateur de table.

La chose la plus importante est la clarté de l'expression, et n'oubliez pas que SQL est considérablement (

20 ans) plus vieux que Python et que de nombreuses langues ont des héritages de leur passé qu'il vaudrait peut-être mieux d'effacer - mais considérez simplement le hiatus allant de Python 2 à Python 3 - qui a (et continue de) causé des difficultés majeures (pour mémoire) , j'admire Guido van Rossum pour son courage à faire ce changement - code cassé. ).

Le problème pour SQL est qu'il est conçu par un comité et, du moins d'après mon expérience, " courage " n'est pas un trait que j'associerais aux comités ! :-) La virgule est tombée en disgrâce et est déconseillée par de nombreux praticiens sérieux mais il a ne pas (malheureusement) été éliminé avec l'arrivée des ANSI JOIN s qui sont plus clairs.


Voir la vidéo: PostgreSQL + PostGIS. Basics