#1 Sun 04 October 2009 17:19
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
MapBasic: problème de coordonnées
[Bonjour
Je suis en train de faire un programme mapbasic 95 où je crée une table points en lambert1 puis
j'ouvre un raster calée par mes soins puis les noms de voies puis j'ouvre un fichier de point en lambert1
Dans la table points j'insère les coordonnées manuellement pour trouver le problème
Code:
Insert Into pointS (obj) Values ( CreatePoint (311253,223720))
Eh bien quand je vais sélectionner ce point les coordonnées sont les suivantes: 600000, 4863838
Si quelqu'un peut m'expliquer pourquoi ?
Le code complet un peu brouillon est en dessous
Code:
dim nouveau as string dim x as INTEGER dim y as INTEGER dim no as string Create Table "pointS" (Champ1 Char(10)) file "C:\boyer\pointS.TAB" TYPE NATIVE Charset "WindowsLatin1" Create Map For pointS CoordSys Earth Projection 3, 1002, "m", 0, 49.5, 48.5985227778, 50.39591167, 600000, 200000 Bounds (-40092, -818525) (1264450, 486383) Map From pointS Set Map Layer 1 Editable On Set Map Layer 1 Editable On Open Table "C:\boyer\Equeurdreville.TAB" Interactive Add Map Auto Layer Equeurdreville Open Table "C:\boyer\Voies_filaire.TAB" Interactive Add Map Auto Layer Voies_filaire Set Window FrontWindow() Enhanced On Set Map Layer 3 Display Global Global Line (2,2,16776960) Label Font ("Arial",1,3,0,16777215) With Nom2 Follow Path Auto On Offset 0 Alpha 104 set map redraw on Set Window FrontWindow() Title "carte" NOUVEAU = "C:\boyer\pointl1.txt" Open file NOUVEAU For Input As #1 do Until EOF(1) Input #1, no,x,y print x print y Insert Into pointS (obj) Values ( CreatePoint (311253,223720)) Set Map Layer 1 Display Global Global Symbol (34,255,14) select * from pointS into Selection Set Map Zoom Entire Set Map Center (x, y) NOTE "" Set Map Scale 1 Units "cm" For 2460 Units "cm" Layout Set CoordSys Layout Units "cm" Create Frame (0.1,0.1) (13.899,7.4) Pen (1,2,0) Brush (2,16777215,16777215) Title"carte" FillFrame On Set Window FrontWindow() Title NO Dim win_id As Integer win_id = FrontWindow( ) PrintWin Window win_id note no close Window FrontWindow() Delete Object From selection Loop
Dernière modification par fredericfridi (Sun 04 October 2009 17:21)
Hors ligne
#2 Sun 04 October 2009 18:30
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Re: MapBasic: problème de coordonnées
Je viens de trouver...
Même si la table a déjà la projection, il faut lui la lui préciser.
Code:
Set CoordSys Earth Projection 1, 104 Insert Into pointS (obj) Values ( CreatePoint (x,y))
Hors ligne
#3 Sun 04 October 2009 18:46
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: MapBasic: problème de coordonnées
Euh...je doute fort que votre solution soit la bonne...
Par défaut MB utilise une projection longitude/latitude (a priori pas WGS84)
Si vous forcez par Set CoordSys la projection en longitude/latitude WGS84, le X,Y devront être indiqués dans cette projection (ce qui n'est pas le cas de votre premier code: CreatePoint (311253,223720)
Si la table est créée en Lambert1, les x,y des points que vous y injectez doivent aussi être en Lambert1 et vous devez forcer avant l'utilisation de cette projection par Set CoordSys Table pointS
ps: n'oubliez pas que la projection de la carte devient celle du raster quand il y en a un ! Votre image n'est probablement pas en Lambert1 (regardez son TAB) et c'est pourquoi les coordonnées que vous obtenez sont celle du point introduit en Lambert1 ...mais traduites dans la projection du raster
re ps: pas besoin de tant de points d'exclamation dans le titre du sujet !!!!!!!!!
Hors ligne