Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 24 March 2016 11:12

pouniok
Juste Inscrit !
Date d'inscription: 24 Mar 2016
Messages: 2

Lignes, intersections, buffers - Comment bien procéder ?

Bonjour à tous,

Je travaille avec des agriculteurs qui ont des boitiers GPS sur leurs machines, et j'aimerais faire un traitement un peu particulier avec ces points GPS.

Un agriculteur va travailler sur plusieurs champs, et je vais pouvoir reconstituer sa trajectoire en reliant les points GPS par date et heure.
Ensuite, je voudrais trouver un moyen de dire qu'il a une grosse machine qui travaille avec un rayon de 4 mètres autour du point GPS, puis regrouper ces zones de travail en les recoupant avec le champ (pour ne pas avoir de zone travaillée sur des chemins par exemple).

Voici une petite image pour m'expliquer :

[img]http://i.imgur.com/RyQ4k4R.png?1[/img]

1. C'est la trajectoire GPS (à partir des points reliés en ligne)
2. C'est la trajectoire séparée par champ
3. C'est la trajectoire par champ qui est étirée de 4m de chaque côté pour avoir la zone travaillée
4. C'est la zone travaillée qui est recoupée avec le champ pour ne pas dépasser

J'ai créé une requête qui fonctionne mais elle a deux soucis. Elle me dit que je ne peux pas faire d'union de mes zones travaillées par champ car j'ai déjà une fonction d'agrégat des points GPS en ligne, et elle est assez longue à s'exécuter.

Voici la requête :

Code:

SELECT ST_Intersection( -- Recoupe les zone travaillée avec les champs
    ST_Buffer( -- Etend les lignes dans les champs de 4m de chaque coté
    (ST_Dump( -- Separe toutes les intersections entre trajectoire et champs pour ne pas les relier
         ST_Intersection(  -- Intersection entre la trajectoire GPS et les champs
            ST_MakeLine(gps.geom ORDER BY gps.date), -- Creation de la ligne avec les points GPS
             (SELECT ST_Union(geom) from champs)    -- Union des formes des champs
         )
      )).geom::geography, 4), -- Taille de la zone travaillée
      (SELECT ST_Union(geom) from champs)) -- Union des formes des champs
)
 as geom
FROM gps
WHERE gps.date = '2016-02-29'
GROUP BY gps.machine

Si jamais quelqu'un connais un moyen d'améliorer cette requête, pour faire les choses plus simplements ou utiliser les indexes un peu plus pour aller plus vite je suis preneur.

Merci pour votre aide !
Pou.

Hors ligne

 

#2 Thu 24 March 2016 12:32

gustavecoste
Participant actif
Lieu: Montpellier
Date d'inscription: 24 Apr 2013
Messages: 118

Re: Lignes, intersections, buffers - Comment bien procéder ?

Bonjour,
Pourquoi ne pas faire le découpage qu'après le buffer afin de n'avoir à le faire qu'une seule fois? En gros passer l'étape 2.


Gustave Coste

Hors ligne

 

#3 Thu 24 March 2016 14:20

pouniok
Juste Inscrit !
Date d'inscription: 24 Mar 2016
Messages: 2

Re: Lignes, intersections, buffers - Comment bien procéder ?

Bonjour Gustave,


Le problème lorsque je fais le découpage après buffer, c'est que la partie de la trajectoire en dehors du champ peut recouvrir une partie du champ, et donc je me retrouve à la fin avec des zones de travail qui n'existent pas.

Mon exemple n'est pas assez précis pour le deviner mais si le trait rouge de l'image 1 continuait pour contourner les champs, alors il se pourrait que tout le coté adjacent à la route soit noté comme travaillé !

smile

Dernière modification par pouniok (Thu 24 March 2016 14:21)

Hors ligne

 

#4 Thu 24 March 2016 14:22

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: Lignes, intersections, buffers - Comment bien procéder ?

Bonjour,

Une première idée

A partir de l'ensemble des points GPS je crée une BBox qui est le xmin,ymin et xmax, ymax de l'ensemble de points.
Je sélectionne les champs qui ont une intersection avec cette BBox.
Je crée la polyligne par gps.geom et gps.date.
J'obtiens les polylignes résultantes de l'intersection avec les champs.
application buffer.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB