Postgis intersection con più di due geometrie...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Postgis intersection con più di due geometrie...

Amedeo Fadini
Ciao a tutti,
in postgis la funzione ST_intersection [0] prende in argomento due
geometrie.

Ho l'esigenza di stimare le coordinate di  un punto conoscendo le distanze
da altri punti di posizione nota, per cui vorrei individuare il centroide
dell'intersezione tra i buffer (d + 10m) di n punti, più la cosa migliore
sarebbe avere una funzione di aggregazione ma forse è possibile iterare
lungo la lista di punti usando come left il risultato della intersezione
precedente...

Qualche consiglio?

Amefad



[0] https://postgis.net/docs/manual-1.5/ST_Intersection.html
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019
Reply | Threaded
Open this post in threaded view
|

Re: Postgis intersection con più di due geometrie...

Marco Guiducci-3
Il 13/08/2020 10:30, Amedeo Fadini ha scritto:

> Ciao a tutti,
> in postgis la funzione ST_intersection [0] prende in argomento due
> geometrie.
>
> Ho l'esigenza di stimare le coordinate di  un punto conoscendo le distanze
> da altri punti di posizione nota, per cui vorrei individuare il centroide
> dell'intersezione tra i buffer (d + 10m) di n punti, più la cosa migliore
> sarebbe avere una funzione di aggregazione ma forse è possibile iterare
> lungo la lista di punti usando come left il risultato della intersezione
> precedente...
>
> Qualche consiglio?
>
> Amefad

il gis è bello ma non dimentichiamoci le basi:

se le distanze provengono da misure linearmente indipendenti, allora:

(Xp-X1)^2+(Yp-Y1)^2=d1^2
(Xp-X2)^2+(Yp-Y2)^2=d2^2
...
(Xp-Xn)^2+(Yp-Yn)^2=dn^2

ora questa va la linearizzata (saltando passaggi....) ed espressa in
forma matriciale del tipo:

Ax = z

dove x è il vettore incognito (Xp,Yp)

A una matrice di n righe e due colonne. nella prima colonna c'è il
rapporto -Xi/di, nella seconda -Yi/di
con i che va da 1 a n (notare il meno!)

se si dispone di una stima di Xp e Yp, allora z è un vettore del tipo
(Xo,Yo) altrimenti poni (0,0)

il sistema si risolve facendo la matricde inversa di A e moltiplicando
per z.

sperando di non aver tralasciato niente..... prova :-)
mg

--
Marco Guiducci - 055 4383194
SITA - Sistema informativo territoriale e ambientale
Regione Toscana - Via di Novoli 26 - 50127 Firenze

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019
Reply | Threaded
Open this post in threaded view
|

Re: Postgis intersection con più di due geometrie...

Amedeo Fadini
Grazie mille Marco! Era esattamente il tipo di risposta che mi serviva (per
ora non ho capito quasi niente ma un libro di matematica lo trovo...)

Amefad

Il Ven 14 Ago 2020, 10:46 Marco Guiducci <[hidden email]>
ha scritto:

> Il 13/08/2020 10:30, Amedeo Fadini ha scritto:
> > Ciao a tutti,
> > in postgis la funzione ST_intersection [0] prende in argomento due
> > geometrie.
> >
> > Ho l'esigenza di stimare le coordinate di  un punto conoscendo le
> distanze
> > da altri punti di posizione nota, per cui vorrei individuare il centroide
> > dell'intersezione tra i buffer (d + 10m) di n punti, più la cosa migliore
> > sarebbe avere una funzione di aggregazione ma forse è possibile iterare
> > lungo la lista di punti usando come left il risultato della intersezione
> > precedente...
> >
> > Qualche consiglio?
> >
> > Amefad
>
> il gis è bello ma non dimentichiamoci le basi:
>
> se le distanze provengono da misure linearmente indipendenti, allora:
>
> (Xp-X1)^2+(Yp-Y1)^2=d1^2
> (Xp-X2)^2+(Yp-Y2)^2=d2^2
> ...
> (Xp-Xn)^2+(Yp-Yn)^2=dn^2
>
> ora questa va la linearizzata (saltando passaggi....) ed espressa in
> forma matriciale del tipo:
>
> Ax = z
>
> dove x è il vettore incognito (Xp,Yp)
>
> A una matrice di n righe e due colonne. nella prima colonna c'è il
> rapporto -Xi/di, nella seconda -Yi/di
> con i che va da 1 a n (notare il meno!)
>
> se si dispone di una stima di Xp e Yp, allora z è un vettore del tipo
> (Xo,Yo) altrimenti poni (0,0)
>
> il sistema si risolve facendo la matricde inversa di A e moltiplicando
> per z.
>
> sperando di non aver tralasciato niente..... prova :-)
> mg
>
> --
> Marco Guiducci - 055 4383194
> SITA - Sistema informativo territoriale e ambientale
> Regione Toscana - Via di Novoli 26 - 50127 Firenze
>
> _______________________________________________
> [hidden email]
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 764 iscritti al 23/08/2019
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019
Reply | Threaded
Open this post in threaded view
|

Re: Postgis intersection con più di due geometrie...

Giuliano Curti
Ciao Marco, Amedeo e tutti,

aggiungo due briciole:

1) la linearizzazione di cui parla Marco è quella tipicamente usata negli
algoritmi GPS, quindi il testo di "matematica" che cerchi lo puoi trovare
in qualche manuale GPS di buona qualità; argomento incrociato, ma non
ancora approfondito quindi non riesco a darti maggiori indicazioni né link
precisi; spero cmq ti aiuti nella ricerca;

2) il numero di punti è N, lo spazio del punto ignoto è 2D/3D, quindi la
matrice A di cui parla Marco è rettangolare Nx2 o Nx3, quindi non
invertibile; azzardo che dovrai premoltiplicarla per la sua trasposta, come
si fa per i minimi quadrati; questa però e materia antica che non
rispolvero da un po' e quindi anche qui ...... un buon testo di algebra
lineare sarà un valido tutor.

Ciao,
Giuliano

Il ven 14 ago 2020, 13:31 Amedeo Fadini <[hidden email]> ha scritto:

> Grazie mille Marco! Era esattamente il tipo di risposta che mi serviva (per
> ora non ho capito quasi niente ma un libro di matematica lo trovo...)
>
> Amefad
>
> Il Ven 14 Ago 2020, 10:46 Marco Guiducci <
> [hidden email]>
> ha scritto:
>
> > Il 13/08/2020 10:30, Amedeo Fadini ha scritto:
> > > Ciao a tutti,
> > > in postgis la funzione ST_intersection [0] prende in argomento due
> > > geometrie.
> > >
> > > Ho l'esigenza di stimare le coordinate di  un punto conoscendo le
> > distanze
> > > da altri punti di posizione nota, per cui vorrei individuare il
> centroide
> > > dell'intersezione tra i buffer (d + 10m) di n punti, più la cosa
> migliore
> > > sarebbe avere una funzione di aggregazione ma forse è possibile iterare
> > > lungo la lista di punti usando come left il risultato della
> intersezione
> > > precedente...
> > >
> > > Qualche consiglio?
> > >
> > > Amefad
> >
> > il gis è bello ma non dimentichiamoci le basi:
> >
> > se le distanze provengono da misure linearmente indipendenti, allora:
> >
> > (Xp-X1)^2+(Yp-Y1)^2=d1^2
> > (Xp-X2)^2+(Yp-Y2)^2=d2^2
> > ...
> > (Xp-Xn)^2+(Yp-Yn)^2=dn^2
> >
> > ora questa va la linearizzata (saltando passaggi....) ed espressa in
> > forma matriciale del tipo:
> >
> > Ax = z
> >
> > dove x è il vettore incognito (Xp,Yp)
> >
> > A una matrice di n righe e due colonne. nella prima colonna c'è il
> > rapporto -Xi/di, nella seconda -Yi/di
> > con i che va da 1 a n (notare il meno!)
> >
> > se si dispone di una stima di Xp e Yp, allora z è un vettore del tipo
> > (Xo,Yo) altrimenti poni (0,0)
> >
> > il sistema si risolve facendo la matricde inversa di A e moltiplicando
> > per z.
> >
> > sperando di non aver tralasciato niente..... prova :-)
> > mg
> >
> > --
> > Marco Guiducci - 055 4383194
> > SITA - Sistema informativo territoriale e ambientale
> > Regione Toscana - Via di Novoli 26 - 50127 Firenze
> >
> > _______________________________________________
> > [hidden email]
> > http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> > Questa e' una lista di discussione pubblica aperta a tutti.
> > I messaggi di questa lista non hanno relazione diretta con le posizioni
> > dell'Associazione GFOSS.it.
> > 764 iscritti al 23/08/2019
> _______________________________________________
> [hidden email]
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 764 iscritti al 23/08/2019
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019
Reply | Threaded
Open this post in threaded view
|

Re: Postgis intersection con più di due geometrie...

Andrea Peri
In reply to this post by Amedeo Fadini
Se vuoi esplorare mondi nuovi,
L ultimissima versione di spatialite che Furieri ha rilasciato poche
settimane fa
Contiene tra le innumerevoli novità anche delle funzioni.per il calcolo
matriciale.
Compreso calcolo del determinante, dell inversa etc.

http://www.gaia-gis.it/gaia-sins/spatialite-sql-5.0.0.html#p15plus

A.


Il ven 14 ago 2020, 13:31 Amedeo Fadini <[hidden email]> ha scritto:

> Grazie mille Marco! Era esattamente il tipo di risposta che mi serviva (per
> ora non ho capito quasi niente ma un libro di matematica lo trovo...)
>
> Amefad
>
> Il Ven 14 Ago 2020, 10:46 Marco Guiducci <
> [hidden email]>
> ha scritto:
>
> > Il 13/08/2020 10:30, Amedeo Fadini ha scritto:
> > > Ciao a tutti,
> > > in postgis la funzione ST_intersection [0] prende in argomento due
> > > geometrie.
> > >
> > > Ho l'esigenza di stimare le coordinate di  un punto conoscendo le
> > distanze
> > > da altri punti di posizione nota, per cui vorrei individuare il
> centroide
> > > dell'intersezione tra i buffer (d + 10m) di n punti, più la cosa
> migliore
> > > sarebbe avere una funzione di aggregazione ma forse è possibile iterare
> > > lungo la lista di punti usando come left il risultato della
> intersezione
> > > precedente...
> > >
> > > Qualche consiglio?
> > >
> > > Amefad
> >
> > il gis è bello ma non dimentichiamoci le basi:
> >
> > se le distanze provengono da misure linearmente indipendenti, allora:
> >
> > (Xp-X1)^2+(Yp-Y1)^2=d1^2
> > (Xp-X2)^2+(Yp-Y2)^2=d2^2
> > ...
> > (Xp-Xn)^2+(Yp-Yn)^2=dn^2
> >
> > ora questa va la linearizzata (saltando passaggi....) ed espressa in
> > forma matriciale del tipo:
> >
> > Ax = z
> >
> > dove x è il vettore incognito (Xp,Yp)
> >
> > A una matrice di n righe e due colonne. nella prima colonna c'è il
> > rapporto -Xi/di, nella seconda -Yi/di
> > con i che va da 1 a n (notare il meno!)
> >
> > se si dispone di una stima di Xp e Yp, allora z è un vettore del tipo
> > (Xo,Yo) altrimenti poni (0,0)
> >
> > il sistema si risolve facendo la matricde inversa di A e moltiplicando
> > per z.
> >
> > sperando di non aver tralasciato niente..... prova :-)
> > mg
> >
> > --
> > Marco Guiducci - 055 4383194
> > SITA - Sistema informativo territoriale e ambientale
> > Regione Toscana - Via di Novoli 26 - 50127 Firenze
> >
> > _______________________________________________
> > [hidden email]
> > http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> > Questa e' una lista di discussione pubblica aperta a tutti.
> > I messaggi di questa lista non hanno relazione diretta con le posizioni
> > dell'Associazione GFOSS.it.
> > 764 iscritti al 23/08/2019
> _______________________________________________
> [hidden email]
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 764 iscritti al 23/08/2019
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019
Reply | Threaded
Open this post in threaded view
|

Re: Postgis intersection con più di due geometrie...

Marco Guiducci-3
In reply to this post by Giuliano Curti


Il 14/08/2020 19:34, Giuliano Curti ha scritto:

> Ciao Marco, Amedeo e tutti,
>
> aggiungo due briciole:
>
>
> 2) il numero di punti è N, lo spazio del punto ignoto è 2D/3D, quindi la
> matrice A di cui parla Marco è rettangolare Nx2 o Nx3, quindi non
> invertibile; azzardo che dovrai premoltiplicarla per la sua trasposta, come
> si fa per i minimi quadrati; questa però e materia antica che non
> rispolvero da un po' e quindi anche qui ...... un buon testo di algebra
> lineare sarà un valido tutor.
>
non azzardi
lo savevo di aver tralasciato una parte fondamentale :-) ovvero che il
si risolve con i minimi quadrati.

però il nocciolo del problema era fare la matrice "madre". poi son
passaggi..... che anche una calcolatrice tascabile fa.
in realtà, per fare accademia, sulla matrice n x m ci sono quintalate di
documentazione per renderla stabile dal punto di vista computazionale: è
una matrice dispersa? ci sono numeri grandi e mumeri piccoli?
insomma tutte le tecniche di ordinamento e, in seguito, di pivoting
sulla matrice normale (quella quadrata). in teoria gli algoritmi dei
linguaggi di programmazione (c, python), dovrebbero già essere ottimizzati.


l'argomento in discussione è sicuramente matematico, ma se volete
cercare anche esempi pratici e numerici, cercate nei testi di
topografia. Il problema è un classico esempio topografico di
compensazione di reti trigonometriche con solo distanze misurate
(trilaterazione).
la situazione più complessa, cioè la realtà, è che oltre alle distanze
(poche) in ballo ci sono le misure di azimut.
saluti


--
Marco Guiducci - 055 4383194
SITA - Sistema informativo territoriale e ambientale
Regione Toscana - Via di Novoli 26 - 50127 Firenze

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019