Bonjour,
Apres moult recherche je ne trouve pas l'information vital pour mon futur dev, à savoir connaitre le nombre maximum de point possible pour un polygon de type geopgraphy.
Si une âme charitable passe par la, alors merci par avance ;-)
Bonjour,
Apres moult recherche je ne trouve pas l'information vital pour mon futur dev, à savoir connaitre le nombre maximum de point possible pour un polygon de type geopgraphy.
Si une âme charitable passe par la, alors merci par avance ;-)
La limite de ce type est de 2 Go. Pour savoir approximativement la taille stockée d'un polygone, vous pouvez utiliser la méthode suivante qui vous donne une idée en octets :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DECLARE @G geometry SET @G = geometry::STGeomFromText ('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0) SELECT DATALENGTH(@G)
Merci pour cette réponse, très très intéressante.
Toutefois la question porte sur le type geography, j'ai réalisé plusieurs test et à chaque fois je bloque des que je dépasse un certain nombre de points (26).
26 points, c'est un peu faible...
voici ce que j'ai pour une table des départements français de l'IGN en comptant le nombre de points des instances geometry :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 Nom STNumPoints -------------------------------------------------- ----------- AIN 498 AISNE 680 ALLIER 499 ALPES-DE-HAUTE-PROVENCE 470 HAUTES-ALPES 480 ALPES-MARITIMES 327 ARDECHE 436 ARDENNES 437 ARIEGE 466 AUBE 442 AUDE 475 AVEYRON 553 BOUCHES-DU-RHONE 377 CALVADOS 505 CANTAL 495 CHARENTE 524 CHARENTE-MARITIME 694 CHER 453 CORREZE 452 COTE-D'OR 589 COTES-D'ARMOR 603 CREUSE 418 DORDOGNE 581 DOUBS 545 DROME 619 EURE 583 EURE-ET-LOIR 471 FINISTERE 919 CORSE-DU-SUD 426 HAUTE-CORSE 325 GARD 513 HAUTE-GARONNE 837 GERS 544 GIRONDE 513 HERAULT 406 ILLE-ET-VILAINE 526 INDRE 420 INDRE-ET-LOIRE 412 ISERE 563 JURA 520 LANDES 406 LOIR-ET-CHER 483 LOIRE 539 HAUTE-LOIRE 450 LOIRE-ATLANTIQUE 489 LOIRET 479 LOT 448 LOT-ET-GARONNE 469 LOZERE 369 MAINE-ET-LOIRE 517 MANCHE 605 MARNE 577 HAUTE-MARNE 539 MAYENNE 433 MEURTHE-ET-MOSELLE 775 MEUSE 551 MORBIHAN 783 MOSELLE 707 NIEVRE 437 NORD 746 OISE 693 ORNE 582 PAS-DE-CALAIS 698 PUY-DE-DOME 514 PYRENEES-ATLANTIQUES 548 HAUTES-PYRENEES 524 PYRENEES-ORIENTALES 302 BAS-RHIN 418 HAUT-RHIN 314 RHONE 436 HAUTE-SAONE 562 SAONE-ET-LOIRE 717 SARTHE 446 SAVOIE 441 HAUTE-SAVOIE 357 PARIS 67 SEINE-MARITIME 471 SEINE-ET-MARNE 522 YVELINES 347 DEUX-SEVRES 535 SOMME 666 TARN 438 TARN-ET-GARONNE 520 VAR 457 VAUCLUSE 331 VENDEE 471 VIENNE 533 HAUTE-VIENNE 481 VOSGES 586 YONNE 587 TERRITOIRE-DE-BELFORT 188 ESSONNE 280 HAUTS-DE-SEINE 109 SEINE-SAINT-DENIS 125 VAL-DE-MARNE 125 VAL-D'OISE 295 GUADELOUPE 776 MARTINIQUE 228 GUYANE 864 REUNION 155
Donnez nous votre exemple !
A +
La table des points :
le regroupement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 idPlotMap indice latitude longitude 1 1 5,47944444444444 49,4952777777778 1 2 5,46611111111111 49,4486111111111 1 18 6,03166666666667 49,2316666666667 1 20 6,00416666666667 49,3086111111111 1 21 5,98666666666667 49,3033333333333 1 22 6,94722222222222 49,3375 1 23 6,06166666666667 49,3566666666667 1 24 6,04083333333333 49,4469444444444 1 25 5,98222222222222 49,4522222222222 1 26 5,97222222222222 49,4894444444444 1 27 5,88944444444444 49,4952777777778 1 28 5,83527777777778 49,52 1 29 5,84611111111111 49,5291666666667 1 30 5,83611111111111 49,5394444444444 1 31 5,82027777777778 49,5355555555556 1 32 5,77166666666667 49,5608333333333 1 33 5,75583333333333 49,5419444444444 1 34 5,74 49,5377777777778 1 35 5,73666666666667 49,5441666666667 1 36 5,70583333333333 49,5372222222222 1 37 5,6625 49,5505555555556 1 38 5,61805555555556 49,5280555555556 1 39 5,61138888888889 49,505 1 40 5,59305555555556 49,5216666666667 1 41 5,55805555555556 49,5269444444444 1 42 5,49194444444444 49,5055555555556 1 43 5,47944444444444 49,4952777777778 2 43 5,47944444444444 49,4952777777778
POLYGON((5.47944444444444 49.4952777777778,5.46611111111111 49.4486111111111,6.03166666666667 49.2316666666667,6.00416666666667 49.3086111111111,5.98666666666667 49.3033333333333,6.94722222222222 49.3375,6.06166666666667 49.3566666666667,6.04083333333333 49.4469444444444,5.98222222222222 49.4522222222222,5.97222222222222 49.4894444444444,5.88944444444444 49.4952777777778,5.83527777777778 49.52,5.84611111111111 49.5291666666667,5.83611111111111 49.5394444444444,5.82027777777778 49.5355555555556,5.77166666666667 49.5608333333333,5.75583333333333 49.5419444444444,5.74 49.5377777777778,5.73666666666667 49.5441666666667,5.70583333333333 49.5372222222222,5.6625 49.5505555555556,5.61805555555556 49.5280555555556,5.61138888888889 49.505,5.59305555555556 49.5216666666667,5.55805555555556 49.5269444444444,5.49194444444444 49.5055555555556,5.47944444444444 49.4952777777778))
La conversion :
geography::STPolyFromText({monPolygon},4326)
Votre instance géographique n'est pas valide, dues à des erreurs sur quelques fractions de décimale....
Pour la rendre valide, utiliser MakeValid. Pou tester si elle est valide, utilisez IsValid :
Exemple (avec votre polygone) :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DECLARE @GG geography DECLARE @GM geometry SET @GM = geometry::STGeomFromText ('POLYGON((5.47944444444444 49.4952777777778,5.46611111111111 49.4486111111111,6.03166666666667 49.2316666666667,6.00416666666667 49.3086111111111,5.98666666666667 49.3033333333333,6.94722222222222 49.3375,6.06166666666667 49.3566666666667,6.04083333333333 49.4469444444444,5.98222222222222 49.4522222222222,5.97222222222222 49.4894444444444,5.88944444444444 49.4952777777778,5.83527777777778 49.52,5.84611111111111 49.5291666666667,5.83611111111111 49.5394444444444,5.82027777777778 49.5355555555556,5.77166666666667 49.5608333333333,5.75583333333333 49.5419444444444,5.74 49.5377777777778,5.73666666666667 49.5441666666667,5.70583333333333 49.5372222222222,5.6625 49.5505555555556,5.61805555555556 49.5280555555556,5.61138888888889 49.505,5.59305555555556 49.5216666666667,5.55805555555556 49.5269444444444,5.49194444444444 49.5055555555556,5.47944444444444 49.4952777777778)) ', 0) IF @GM.STIsValid() = 0 SET @GM = @GM.MakeValid(); SET @GG = geography::STGeomFromText(@GM.STAsText(), 4326) SELECT DATALENGTH(@GM)
Rooo super, c'est exactement ce qu'il me faut, un tres grand merci ^^.
Pas trop facile de trouver de l'info sur la geolocalisation sql server lol.
Merci.
Vous trouverez de multiples informations dans la prochaine édition de mon livre sur SQL dont un chapitre nouveau parle des SIG dans les SGBDR et compare PostGreSQL et SQL Server.
A +
Quand paraîtra-t'il et quel en sera le titre ?
http://sqlpro.developpez.com/booksql05/
3e édition
en principe en juillet, mais dans les bacs des libraires peut être pas avant août, voir septembre !
A +
Partager