topografoi.com
14 Δεκ 2018, 07:27 *
Καλώς ορίσατε, Επισκέπτης. Παρακαλούμε συνδεθείτε ή εγγραφείτε.
Χάσατε το email ενεργοποίησης;

Σύνδεση με όνομα, κωδικό και διάρκεια σύνδεσης
Νέα: Αν κάτι δεν είναι στη θέση του, βοηθήστε μας να το διορθώσουμε :-)
Σελίδες: [1]
  Εκτύπωση  
Αποστολέας Θέμα: Ψ.Τ. 2018 - Άσκηση 8  (Αναγνώστηκε 129 φορές)
chiossif

Μηνύματα: 229



WWW
« στις: 24 Νοέ 2018, 11:58 »

Κυρίες, Δεσποσύνες και Κύριοι,

καλή σας ώρα :-)

Με την δημοσίευση αυτή εγκαινιάζουμε μια νέα προσέγγιση για εμάς στη ΣΑΤΜ στον τρόπο επίλυσης αποριών: το φόρουμ. Ήδη υπάρχουν φοιτητικά φόρα αλλά εδώ θα είναι στοχευμένo στην νέα άσκηση 8 του μαθήματος και θα συμμετέχουμε κι εμείς οι διδάσκοντες. Όποια απορία έχετε, με έναν σχετικά ανώνυμο τρόπο, μπορείτε να την εκφράσετε εδώ πατώντας Απάντηση. Σας παρακαλώ ΠΡΙΝ ρωτήσετε διαβάστε τις οδηγίες και τις δημοσιεύσεις που έχουν προηγηθεί. Έτσι ίσως βρείτε απάντηση και ΔΕΝ χρειαστεί να ξαναρωτήσετε κάτι.

Οι οδηγίες εκτέλεσης της άσκησης είναι στα ακόλουθα βήματα:

με τον διαχειριστή αρχείων του υπολογιστή σας:

-> φτιάξτε έναν φάκελο στον υπολογιστή σας με το όνομα ask8 στον χώρο C;\. Το αποτέλεσμα πρέπει να είναι ακριβώς έτσι: C:\ask8
-> μέσα σε αυτό τον φάκελο βάλτε το αρχείο zip με τα προγράμματα και αποσυμπιέστε τα ώστε να τα βλέπετε άμεσα σε μορφή RasterAlgebra.py και όχι σε κάποιο υποφάκελλο
-> μέσα  σε αυτό τον φάκελο βάλτε την κομμένη (clipped) εικόνα σας σε μορφή tif (και όχι vrt ή άλλη) και μετονομάστε την σε kommeni.tif

τρέξτε τώρα το QGIS και κάντε τα ακόλουθα:

-> Επιλέξτε Plugins->Python console

-> στην διεπαφή >>> πληκτρολογείστε τις ακόλουθες εντολές:

--> import os
--> os.chdir('C:\ask8')

ώστε να μπορούμε να εκτελέσουμε τα προγράμματα και να διαβάσουμε την εικόνα μας. Αυτές οι εντολές είναι απαραίτητες κάθε φορά που ανοίγουμε το QGIS.

Για να εκτελέσουμε ένα πρόγραμμα πχ το RasterAlgebra.py θα πρέπει να γράψουμε στην διεπαφή >>> την εντολή:

---> execfile('RasterAlgebra.py')     # ( ΠΡΟΣΟΧΗ ! αν έχετε QGIS 3 η εντολή είναι exec(open('RasterAlgebra.py').read()) )

Ενδεικτικά οι εντολές είναι :

---> execfile('RasterAlgebra.py')
---> execfile('RasterFiltering.py')
---> execfile('RasterKMeans.py')
---> execfile('RasterKMeans_multiband.py')

Η τελευταία αργεί λίγο μερικά λεπτά οπότε υπομονή. Αν ο υπολογιστής γράψει ότι Δεν Αποκρίνεται αυτό είναι φυσιολογικό όσο τρέχει το πρόγραμμα.
Μετά την ολοκλήρωσή τους τα νέα αρχεία είναι έτοιμα και ...

... η συνέχεια εντός του Β1 ;-)

Καλή και γόνιμη μελέτη :-)

Λέφτερα,
Ch Iossif

υγ. Θέλω να ευχαριστήσω το topografoi.com και τον διαχειριστή του, εξέχων μέλος της κοινότητάς μας, για την φιλοξενία :-)
« Τελευταία τροποποίηση: 24 Νοέ 2018, 12:04 από chiossif » Καταγράφηκε

chiossif

Μηνύματα: 229



WWW
« Απάντηση #1 στις: 03 Δεκ 2018, 21:49 »

Γεια και χαρά σε όλες και όλους :-)

Κι όμως εμφανίστηκε περίπτωση όπου η εικόνα εισόδου στον κώδικα των KMeans περιείχε τιμές inf και NaN (πρόκειται για ΕΙΔΙΚΕΣ ΜΗ ΑΡΙΘΜΗΤΙΚΕΣ τιμές ειδικές στην Πάιθον για το άπειρο και τον μη-αριθμό).

Το σφάλμα εμφανίζεται κάπως έτσι:
...
ValueError: array must not contain infs or NaNs

Γιαυτό χρειάζεται η προσθήκη της εντολής:

flatraster = numpy.nan_to_num(flatraster)

αμέσως μετά την αλλαγή σχήματος του πίνακα raster σε flatraster έτσι:

...
# flatten image to get line of values
flatraster=raster.reshape(rows*cols)
flatraster = numpy.nan_to_num(flatraster) # "Mask" NaN and inf numbers
flatraster[flatraster<0] = 0 # Mask NON vegetation
...

Όλα αυτά στο αρχείο RasterKMeans.py (και μην ξεχάσετε να το σώσετε αλλαγμένο έτσι; :-) )

Θυμίζω για κάθε πρόβλημα ΒΕΒΑΙΩΘΕΊΤΕ ότι ακολουθείτε ΠΙΣΤΆ τις οδηγίες. ΑΝ αλλάζει έστω και κάτι το οποίο σας φαίνεται ασήμαντο πιθανό να δημιουργήσει πρόβλημα...

Καλή δουλειά :-)

Λέφτερα,
Ch Iossif

Καταγράφηκε

chiossif

Μηνύματα: 229



WWW
« Απάντηση #2 στις: 09 Δεκ 2018, 06:55 »

Γεια και χαρά σε όλες και όλους :-)

Όσοι έχετε χρησιμοποιήσει το snap για την 7η άσκηση ίσως ΔΕΝ μπορείτε να χρησιμοποιήσετε πίνακα σύγχυσης στο QGIS ή αλλού. Έτσι έφτιαξα ένα πολύ εύκολο προγραμματάκι για να το κάνετε. Απλά ονομάστε class1.tif την μία και class2.tif την άλλη και τρέξτε το κατά τα γνωστά. Το αποτέλεσμα το γράφει στην οθόνη και με αντιγραφή επικόλληση το πάτε όπου θέλετε :-)

Καλή δουλειά :-)

Λέφτερα,
Ch Iossif

* RasterConfusionMatrixCalculator.py (2.23 KB - έγινε λήψη 3 φορές.)
Καταγράφηκε

Σελίδες: [1]
  Εκτύπωση  
 
Μεταπήδηση σε: