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

Σύνδεση με όνομα, κωδικό και διάρκεια σύνδεσης
Νέα: Αν κάτι δεν είναι στη θέση του, βοηθήστε μας να το διορθώσουμε :-)
Σελίδες: [1] 2 3 ... 10
 1 
 στις: 15 Ιαν 2020, 16:12 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

καλησπέρα σας :-)

  • ...
  • import os
  • os.chdir('C:\drsex8') για να πάει στον χώρο που δουλεύουμε. Σας παρακαλώ βάλτε ο καθένας ότι έχει εδώ.
  • ...

Σήμερα εμφανίστηκε υπολογιστής, με παράθυρα φυσικά, ο οποίος ήθελε την εντολή :
Κώδικας:
os.chdir('C:\drsex8')
γραμμένη με δύο \ έτσι:
Κώδικας:
os.chdir('C:\\drsex8')

Ότι άλλο βρω θα το γράφω εδώ :-)
Ελπίζω να βοήθησα :-)

Λέφτερα,
Ch Iossif

 2 
 στις: 11 Ιαν 2020, 21:11 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

καλησπέρα σας και Καλή Χρονιά :-)

Ερώτηση:
«τι μπορώ να κάνω, διότι όταν αντιγράφω την εντολή exec(open('RasterAlgebra.py').read() στο Python console του QGIS για να εκτελέσει το πρόγραμμα, το QGIS σβήνει από μόνο του.»

Απάντηση:
( Θα απαντήσω για το RasterAlgebra.py αλλά οι οδηγίες είναι ανάλογες και για τα άλλα. )
Για να κάνουμε αυτή την άσκηση θα πρέπει να έχουμε στον υπολογιστή μας εγκατεστημένα το QGIS έκδοση 3 κάτι και έναν επεξεργαστή κειμένου της προκοπής. Αν είμαστε σε παράθυρα θα χρειαστούμε τον https://notepad-plus-plus.org/

Για να κάνουμε το 1ο ερώτημα (αλλά ανάλογα και τα άλλα ερωτήματα) ανοίγουμε το RasterAlgebra.py στον επεξεργαστή κειμένου και ενημερώνουμε τις απαιτούμενες γραμμές:
  • 15. το όνομα του αρχείου της εικόνας χωρίς το .τιφ Αυτό το βάζει αυτόματα
  • 29. και
  • 30. τα κανάλια τα οποία συμμετέχουν στον δείκτη / πράξη. Στο παράδειγμα λύνει τον NDVI άρα προσοχή στην αντιστοίχηση.
  • 36. την επέκταση στο όνομα της εικόνας εξόδου. Εδώ στο παράδειγμα έχει NDVI
  • 46. μέχρι και
  • 48. τις απαραίτητες πράξεις σε περίπτωση που ο δείκτης μας έχει διαφορετικό τύπο από τον NDVI. Ένας απλός λόγος είναι μόνο μια διαίρεση (απλούστερος κώδικας) ένας δείκτης είναι όπως εδώ ενώ ένας πολύπλοκος δείκτης EVI θέλει πρόσθετο κώδικα. Μπορείτε να διαλέξετε απλούς δείκτες σαν τον NDVI με αλλαγή ΜΟΝΟ στα κανάλια ;-)

Αφού κάνουμε αυτές τι αλλαγές και δεδομένου ότι έχουμε βάλει τις εικόνες μας και τα προγράμματα στον φάκελο C:\drsex8 (χωρίς ελληνικά ή κενά παρακαλώ) κάνουμε τα ακόλουθα βήματα:
  • Τρέχουμε το Κιου Τζι Άι Ές και ανοίγουμε την Python Console με τα >>> και γράφουμε τις εντολές:
  • import os
  • os.chdir('C:\drsex8') για να πάει στον χώρο που δουλεύουμε. Σας παρακαλώ βάλτε ο καθένας ότι έχει εδώ.
  • exec(open('RasterAlgebra.py').read()) για να τρέξει το πρόγραμμα. Όσο τρέχει το Κιου Τζι Άι Ες δεν θα αποκρίνεται πράγμα φυσιολογικό. Κάποια προγράμματα αργούν μέχρι και 30 λεπτά σε μέτριους υπολογιστές.
  • Η εικόνα εικόνες είναι έτοιμες και τις ανοίγουμε όπως κάθε εικόνα ράστερ (χωρίς το σέμι) ώστε να ολοκληρώσουμε την άσκηση

Τα πιο συνηθισμένα λάθη είναι:

  • λάθος φάκελος εργασίας με ελληνικά κενά ή άλλα...
  • φάκελος εργασίας χωρίς εικόνα ή αρχεία πάιθον
  • λάθος όνομα εικόνας στο αρχείο
  • λάθος εντολή για τον φάκελο εργασίας στην κονσόλα της πάιθον

Ελπίζω να βοήθησα :-)

Καλή Χρονιά :-)

Λέφτερα,
Ch Iossif

 3 
 στις: 09 Ιαν 2020, 01:49 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

Καλή Χρονιά και πάντα με Υγεία :-)

Το SNAP είναι ένα σύγχρονο και εξαιρετικό πρόγραμμα διαχείρισης δεδομένων παρατήρησης της γης. Και ως τέτοιο κάνει και μη επιβλεπόμενη ταξινόμηση με φιλικό τρόπο παρότι ΔΕΝ συνεργάζεται με το Κιου Τζι Άι Ές. Πάμε να δούμε πως:

  • Από την διεύθυνση https://step.esa.int/main/download/snap-download κατεβάζουμε την κατάλληλη έκδοση για τον υπολογιστή μας
  • Εκτελούμε την εγκατάσταση και στην πρώτη εκτέλεση την πιθανή αυτόματη ενημέρωση των πρόσθετων ακολουθώντας τις οδηγίες
  • Ανοίγουμε το πρόγραμμα και φορτώνουμε την εικόνα μας πχ kommeni.tif από την επιλογή Open Product (το πρώτο εικονίδιο αριστερά πάνω)
  • Επιλέγουμε με την σειρά : Raster->Classification->Unsupervised Classification->K-Means Cluster Analysis
  • Στο παράθυρο που ανοίγει έχουμε δύο καρτέλες. Στην 1η I/O Parameters ρυθμίζουμε το αρχείο εξόδου πχ kommeni_kmeans_8_clusters και Save As: GeoTIFF
  • Στην καρτέλα Processing Parameters ρυθμίζουμε το πλήθος των κατηγοριών cluster 8 στο παράδειγμά μας και είμαστε έτοιμοι να επιλέγουμε Run.
  • Επαναλμβάνουμε αλλάζοντας το όνομα της εικόνας αποτελέσματος και το πλήθος των κατηγοριών όπως λέει η εκφώνηση.

Με την ολοκλήρωση της εκτέλεσης η ταξινομημένη εικόνα kommeni_kmeans_8_clusters.tif αποθηκεύεται στον δίσκο στον ίδιο φάκελο με την αρχική εικόνα. Έτσι συνεχίζουμε την εκπόνηση της άσκησης στο Κιου Τζι Άι Ές όπως μας ζητά η εκφώνηση.

Καλή και Γόνιμη Χρονιά :-)

Λέφτερα,
Ch Iossif

 4 
 στις: 08 Ιαν 2020, 19:27 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

καλησπέρα σας και Καλή Χρονιά :-)

Ερώτηση:
«για την μη επιβλεπόμενη ταξινόμηση με αλγόριθμο Κ means clustering κατέβασα το orfeo toolbox από το λινκ που μας δίνεται στην εκφώνηση της άσκησης. Ύστερα έκανα unzip το αρχείο και το αντέγραψα στο c: . Μετά από το qgis Πήγα στο processing --> options --> providers και δεν βρήκα το orfeo ώστε να κάνω activate.. τι μπορεί να πήγε λάθος;»
Απάντηση:
Τίποτε στο οποίο να φταις εσύ. Το πρόγραμμα orfeo έπαψε να είναι εντελώς συμβατό με το ΚιουΤζιΑιΕς. Προτείνω να χρησιμοποιήσεις τις άλλες λύσεις που επιδείχθηκαν στην άσκηση με GrassGIS (https://grasswiki.osgeo.org/wiki/Image_classification για περισσότερα , εύκολο εντός του ΚιουΤζιΑιΕς, δύσκολο εκτός)  ή SAGA (βλ. και απάντηση εδώ εύκολο εντός και εκτός του ΚιουΤζιΑιΕς ;-) ).

Ελπίζω να βοήθησα :-)

Χρόνια Πολλά !

Λέφτερα,
Ch Iossif

 5 
 στις: 08 Ιαν 2020, 19:11 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

καλησπέρα σας και Καλή Χρονιά :-)

Ερώτηση:
«σχετικά με το δεύτερο ερώτημα της άσκηση 8 θα πρέπει να χρησιμοποιήσουμε τα φίλτρα που είχαμε χρησιμοποιήσει στην άσκηση 3; και αν ναι πως θα το αλλάξουμε αυτό στον κώδικα;»
Απάντηση:
Από την εκφώνηση διαβάζουμε «Σχολιάστε τα αποτελέσματα σε σχέση και με τα φίλτρα που εφαρμόσατε στην Άσκηση 3» άρα ΝΑΙ. Στο πρόγραμμα RasterFiltering βλέπουμε τις γραμμές 77, 80, 83 και 87 οι οποίες έχουν result =  το κάθε φίλτρο. Αν έχει μπροστά # τότε αυτή η γραμμή είναι σχολιασμένη και δεν λειτουργεί. Η τελευταία (πιο μεγάλος αριθμός γραμμής) γραμμή result η οποία ΔΕΝ έχει # μπροστά είναι αυτή η οποία αποθηκεύεται. Οπότε σε αυτή την περίπτωση βλέπουμε τι φίλτρο υλοποιεί και ρυθμίζουμε το όνομα του αποτελέσματος (γραμμή 35 ανάλογα πχ outfilename=imagefilename+'_filtered_Sobel.tif')
Τα φίλτρα που είναι ΉΔΗ υλοποιημένα είναι:
  • φίλτρο συνέλιξης γενικά με δύο τρόπους από γραμμή 44 έως και 71 (μόνο αν κατέχετε το άθλημα)
  • Sobel από γραμμή 73 έως και 77
  • Median από γραμμή 79 έως και 80
  • Laplace από γραμμή 82 έως και 83 και
  • φίλτρο συνέλιξης γενικά από γραμμή 85 έως και 87. Εδώ απλά αλλάζουμε τα νούμερα στην λίστα πχ αντί για [[0,-1,0], [-1,5,-1], [0,-1,0]] βάζουμε [[0.11,0.11,0.11], [0.11,0.12,0.11], [0.11,0.110.11]] για μέσου όρου (1/9)

Ερώτηση:
«Που πρέπει να βάλω τα στοιχεία του πίνακα στο notepad ++ για να δημιουργηθεί το φίλτρο ;»
Απάντηση:
Σε καλύπτει η προηγούμενη ερώτηση. Αλλά ομολογώ τρόμαξα να καταλάβω...

Ερώτηση:
«Στην OsGeo4W δεν τρέχει το πρόγραμμα Filtering και το Κmeans βγάζοντας πρόβλημα με την βιβλιοθήκη SciPy, όπως φαίνεται στις εικόνες. Αυτό συμβαίνει γιατί πρέπει να κατεβάσουμε κάτι? »
Απάντηση:
Όχι απλά το τερματικό των παραθύρων cmd δεν φορτώνει καθόλου πάιθον ενώ το αντίστοιχο του Κιου Τζι Άι Ές μόνο την πάιθον χωρίς τις βιβλιοθήκες. Άρα στα παράθυρα ΜΟΝΟ ΜΕΣΑ ΑΠΟ ΤΟ Κιου Τζι Άι Ές τρέχουν τα προγράμματα όπως δείξαμε και στο μάθημα με τις εντολές:

Κώδικας:
import os # make os functions avaliable here
os.chdir('C:\Tilepiskopisi\Ex8') # change to working folder
exec(open('RasterFiltering.py').read()) # run your code Python3 QGIS 3.x

Κάθε φορά που τρέχουμε το Κιου Τζι Άι Ές η import και η os.chdir χρειάζονται μόνο μια φορά στην αρχή. Μετά τρέχω όσες exec θέλω... Προσοχή στον φάκελο της os.chdir και φυσικά σε ποιο πρόγραμμα τρέχει κάθε φορά. Το τελευταίο θέλει και 20-30 λεπτά ενώ όσο τρέχουν το Κιου Τζι Άι Ές φάινεται να μην αποκρίνεται :-)

Ερώτηση:
«στην ασκ 8 ερώτημα 2ο πρέπει να αλλάξουμε μόνο τα κανάλια στην γραμμή 30 ή πρέπει να πειράξουμε και τη γραμμή 86»
Απάντηση:
Ανάλογα τι θέλεις να κάνεις. Πρόσεξε την πρώτη ερώτηση εδώ...

Ελπίζω να βοήθησα :-)

Καλή Χρονιά :-)

Λέφτερα,
Ch Iossif

 6 
 στις: 04 Ιαν 2020, 13:19 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Γεια και χαρά σε όλες και όλους :-)

Καλή Χρονιά και πάντα με Υγεία :-)

Ο υπολογιστής μας έχει ήδη το saga εγκατεστημένο και μερικές φορές η εκτέλεση από το QGIS είναι πιο δύσκολη. Εδώ θα γράψω τα βήματα για μια εύκολη και γρήγορη εκτέλεση του αλγόριθμου K-means απευθείας από το saga :-)

  • Εκτελούμε το saga και βλέπουμε την πρώτη οθόνη του.
  • Αριστερά πάνω επιλέγουμε την εικόνα μας πχ kommeni.tif
  • Αριστερά κάτω την βλέπουμε να έχει εισαχθεί στο σύστημα. Δεν εμφανίζει κάτι... δεν χρειάζεται...
  • Επιλέγουμε από το μενού: Geoprocessing->Imagery->Classification->Unsupervised->K-means clustering... και ανοίγει το παράθυρο
  • Επιλέγουμε ως Grid το σύστημα της εικόνας μας (δεν έχει άλλο)
  • Επιλέγουμε (από τις τρεις τελίτσες) την εικόνα μας (την πάμε δεξιά)
  • Επιλέγουμε τα clusters που θέλουμε πχ 12 αντί για 10
  • Όταν τελειώσει με το καλό επιλέγουμε Geoprocessing->File->Grid->Export->Export GeoTIFF... και ανοίγει ένα παράθυρο
  • Επιλέγουμε ως Grid το σύστημα της εικόνας μας (δεν έχει άλλο)
  • Επιλέγουμε (από τις τρεις τελίτσες) την εικόνα αποτέλεσμα και την πάμε δεξιά ΜΟΝΗ ΤΗΣ πχ cluster
  • ρυθμίζουμε αν θέλουμε το όνομα του αρχείου tif και εκτελούμε
  • Τώρα ανοίγουμε την εικόνα cluster.tif στο ΚιουΤζιΑιΕς και είμαστε ΟΚ ;-)

Ελπίζω να βοήθησα :-)

Καλή και Γόνιμη Χρονιά :-)

Λέφτερα,
Ch Iossif

 7 
 στις: 10 Δεκ 2019, 09:38 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

καλησπέρα σας :-)

Χθες 10/12 ολοκληρώθηκε η 8η Άσκηση ( με τα προγράμματά της ;-) ) του τρέχοντος εξαμήνου στην ΨΤ. Έτσι, για να βοηθήσουμε την διαδικασία επίλυσης αποριών, ανοίγουμε αυτό το θέμα στο οποίο μπορείτε να υποβάλετε τις ερωτήσεις σας και να διαβάζετε τις ερωτήσεις και τις απαντήσεις των άλλων.

Μην ξεχνάτε ΠΡΙΝ ρωτήσετε να διαβάζετε κατά σειρά: την γενική περιγραφή για το μάθημα και τις οδηγίες για τις ασκήσεις του, τις σημειώσεις σας και ότι έχει ήδη ερωτηθεί εδώ.

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

Λέφτερα,
Ch Iossif

 8 
 στις: 03 Δεκ 2019, 18:41 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Κυρίες, Δεσποσύνες και Κύριοι,

γεια και χαρά :-)

Δώδεκα δωδεκάτου στις δώδεκα :

"""
Οι Τοπογράφοι της Σχολής Αγρονόμων & Τοπογράφων Μηχανικών ΕΜΠ, το GRSS Chapter IEEE NTUA SB και το IEEE NTUA Student Branch σε συνεργασία με το Τμήμα Γεωλογίας και Γεωπεριβάλλοντος του ΕΚΠΑ διοργανώνουν Mapathon στο Εργαστήριο Γεωπληροφορικής της Σχολής Αγρονόμων και Τοπογράφων Μηχανικών, την Πέμπτη 12 Δεκεμβρίου 2019 και ώρα 12:00 μ.μ., με σκοπό την γνωριμία με την έννοια της χαρτογράφησης.

Το Mapathon είναι μια εκδήλωση χαρτογράφησης, όπου οι συμμετέχοντες καλούνται να προβούν στη συμπλήρωση και στη βελτίωση χαρτών, έτσι ώστε να βοηθηθεί η δημιουργία ενός ανοιχτού παγκόσμιου χάρτη. H σημασία του Mapathon είναι ιδιαίτερη, διότι δίνει την ευκαιρία σε ειδικούς αλλά και σε άτομα που δεν έχουν προηγούμενη εμπειρία χαρτογράφησης, μέσα σε πολύ λίγο χρόνο, να συνεισφέρουν στην παροχή δεδομένων σε χώρες που δεν διαθέτουν επαρκή στοιχεία για αξιοποίηση τόσο από την ίδια την κοινωνία όσο και από τους αρμόδιους φορείς. Στόχος του Mapathon είναι η εξέλιξη της ανθρωπιστικής δράσης και η συνεισφορά όλων στην πρόοδο των αναπτυσσόμενων χωρών.

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

Στο συγκεκριμένο Mapathon οι συμμετέχοντες θα επιλέξουν να εργασθούν σε ένα (1) ανάμεσα από τρία (3) projects, με χρήση της πλατφόρμας Humanitarian OpenStreetMap και δεδομένα που παρέχει. 


ΠΡΟΓΡΑΜΜΑ
12:00 – 12:15 Registration

12:15 – 12:30 Χαιρετισμός από την κα. Βασιλική Κουσκουνά και τον κ. Εμμανουήλ Βασιλάκη

12:30 – 13:15 Εισαγωγή στην πλατφόρμα χαρτογράφησης OpenStreetMap από τον κ. Χρήστο Ιωσηφίδη

13:15 – 13:45 Coffee Break

13:45 – 16:00 Επιλογή project και Χαρτογράφηση


Δήλωση συμμετοχής: https://forms.gle/8Tn5UjY383KBhELR8

(Αριθμός συμμετεχόντων:30. Θα τηρηθεί σειρά προτεραιότητας)
"""

Όσοι θέλετε να χαρτογραφήσετε βιαστείτε... :-)

Λέφτερα,
Ch Iossif

 9 
 στις: 03 Δεκ 2019, 16:28 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Γεια και χαρά σε όλες και όλους :-)

Μια και ανοίξαμε τον χορό με κώδικα σε πύθωνα λάβετε και το ConfusionMatrix.py .

Οδηγίες:

1. Ανοίγουμε τον κώδικα με έναν διορθωτή κειμένου και βάζουμε στις γραμμές:

Κώδικας:
### Enter your classified image full path filename here
class_filename="Cropped_A_k-means_12_clusters.tif"
### Enter your truth image full path filename here
truth_filename="Cropped_A_k-means_8_clusters.tif"
### Enter your confusion matrix full path filename here
conf_filename="Cropped_A_k-means_8_12.csv"

το όνομα των αρχείων με την ταξινομημένη, την αναφοράς και το αρχείο csv για τον πίνακα σύγχυσης.

2. Αποθηκεύουμε το αρχείο ConfusionMatrix.py στον φάκελο C:\DRS\Ex7 όπου έχουμε και τις εικόνες

3. Ανοίγουμε το QGIS και τρέχουμε με την σειρά τις εντολές στην επιλογή Plugins->Open python console :
3.1. import os
3.2. os.chdir('C:\DRS\Ex7')
3.3. exec(open('ConfusionMatrix.py').read())

4. Διαβάζουμε προς τα πίσω τα αποτελέσματα του προγράμματος με κύλιση στην οθόνη και ανοίγουμε το αρχείο csv σε ένα πρόγραμμα διαχείρισης λογιστικών φύλλων ώστε να κάνουμε εκεί ότι θέλουμε.

The sky's the limit.

Λέφτερα,
Ch Iossif

υγ.
ΠΡΟΣΟΧΗ!
Στο παράδειγμα συγκρίνω δύο μη επιβλεπόμενες ταξινομήσεις και με μεταβλητό πλήθος κατηγοριών οπότε οι υπολογισμοί ακριβειών κτλ δεν ισχύουν ως τέτοιοι.
Το πρόγραμμα αυτό λειτουργεί ΑΠΟΚΛΕΙΣΤΙΚΑ με δεδομένα raster (άρα ΔΕΝ κάνει για την άσκηση 6 άμεσα).

 10 
 στις: 03 Δεκ 2019, 10:40 
Ξεκίνησε από chiossif - Τελευταίο μήνυμα από chiossif
Γεια και χαρά σε όλες και όλους :-)

Το πρόγραμμα RasterKMeans_multiband.py εκτελεί μη επιβλεπόμενη ταξινόμηση:

Κώδικας:
#
# DRSEx. 7 - Remote Sensing Lab. - SRSE NTUA
#
# Image unsupervised classification (multiband)
#
# License: https://www.gnu.org/licenses/gpl.txt
#
import numpy, sys, gdal, gdalconst
from scipy.cluster.vq import *

# register all of the GDAL drivers
gdal.AllRegister()

# open the image
imagefilename='Cropped_A' ### Cropped_A.tif multiband image file name
inDs = gdal.Open(imagefilename+'.tif', gdalconst.GA_ReadOnly)
if inDs is None:
  print('Could not open '+imagefilename+'.tif')
  sys.exit(1)
print('Image file name = '+imagefilename+'.tif')

# get image size
rows = inDs.RasterYSize
cols = inDs.RasterXSize
bands = inDs.RasterCount
print('Rows = '+str(rows)+' Cols = '+str(cols)+' Bands = ',str(bands))

# read image into Numpy Array
raster = inDs.ReadAsArray().astype(numpy.float32)
print('Shape of input image : '+str(raster.shape))

# flatten image to get line of values [ http://users.ntua.gr/chiossif/Free_As_Freedom_Software/BIL_BIP_BSQ.pdf ]
flatraster = numpy.zeros((rows*cols, bands))
for r in range(rows):
    for c in range(cols):
        for b in range(bands):
            flatraster[r*cols+c,b]=raster[b,r,c]
print('Shape of K-Means algorithm input : '+str(flatraster.shape))

# run k-means algorithm with multiple clusters
for i in range(8,17,4):
    kmeansfilename=imagefilename+'_k-means_'+str(i)+'_clusters.tif' # Output image file name
    driver = inDs.GetDriver()
    outDs = driver.Create(kmeansfilename, cols, rows, 1, gdalconst.GDT_Byte)
    if outDs is None:
        print('Could not create '+ kmeansfilename)
        sys.exit(1)
    outBand = outDs.GetRasterBand(1)
    print("Calculating k-means with ", i, " clusters.")

    # This scipy code classifies with k-mean unsupervised classifier in two steps:
    # centroid estimation and image classification.
    # centroids have cluster size and
    # code has same length as flattened image
    # and defines which class the value corresponds to
    centroids, variance = kmeans(flatraster, i)
    print('Shape of K-Means centroid array : '+str(centroids.shape))
    code, distance = vq(flatraster, centroids)
    print('Shape of K-Means classified array : '+str(code.shape))
    
    #Since code contains the classified values, reshape back to image dimensions
    codeim = code.reshape(raster.shape[1], raster.shape[2])
    print('Shape of K-Means classified image : '+str(codeim.shape))

    # write data to disk
    outBand.WriteArray(codeim)
    outBand.FlushCache()

    # georeference the image and set the projection
    outDs.SetGeoTransform(inDs.GetGeoTransform())
    outDs.SetProjection(inDs.GetProjection())
    outDs = None
    print('Classified (KMeans) image file name = '+kmeansfilename+' DONE !')
inDs = None

# Display QGIS message
print(
"""
# Run inside QGIS at Plugins->Open python console >>> prompt
import os # make os functions avaliable here
os.chdir('C:\DRS\Ex7') # change to working folder
execfile('RasterKMeans_multiband.py') # run your code Python2 QGIS 2.x OR
exec(open('RasterKMeans_multiband.py').read()) # run your code Python3 QGIS 3.x
"""
)

ΠΡΟΣΟΧΗ
Το όνομα της εικόνας το αλλάζετε στην γραμμή :
Κώδικας:
imagefilename='Cropped_A' ### Cropped_A.tif multiband image file name

ενώ στην γραμμή
Κώδικας:
for i in range(8,17,4):
ρυθμίζετε πόσες κλάσεις θέλετε. Εδώ από 8 μέχρι 17 με βήμα 4 δηλαδή 8 12 και 16.

Οδηγίες:

1. Φτιάχνουμε τον φάκελο της άσκησης έστω C:\DRS\Ex7 και βάζουμε μέσα το πρόγραμμα RasterKMeans_multiband.py και την εικόνα μας έστω Cropped_A.tif
2. Ανοίγουμε το QGIS και τρέχουμε με την σειρά τις εντολές στην επιλογή  Plugins->Open python console :
2.1. import os
2.2. os.chdir('C:\DRS\Ex7')
2.3. exec(open('RasterKMeans_multiband.py').read())
3. Το πρόγραμμα τρέχει (αργεί αρκετά και ζεσταίνει το πισί) αλλά φτιάχνει 3 μη επιβλεπόμενες ταξινομήσεις με 8 12 και 16 τάξεις με ονόματα  Cropped_A_k-means_8_clusters.tif, Cropped_A_k-means_12_clusters.tif και Cropped_A_k-means_12_clusters.tif αντίστοιχα.
4. ΑΦΟΥ τελειώσει το πρόγραμμα (το QGIS ΔΕΝ θα αντιδρά νωρίτερα) ανοίγουμε τις τρεις ταξινομήσεις.
5. Για να συνεχίσουμε την άσκηση με τον χρωματισμό των κατηγοριών και την ονοματοδοσία τους προχωράμε κανονικά: δεξί κλικ στο Layers, Properties, Symbology, Επιλέγουμε Palleted /Unique values στο Render type, πατάμε Classify, βάζουμε κόκκινο το 1ο και τα λοιπά όπως δείξαμε...

Ελπίζω να βοήθησα και με Πάιθον :-)

Λέφτερα,
Ch Iossif


Σελίδες: [1] 2 3 ... 10