Les lieux figurant sur les fiches des soldats coloniaux
L’une des principales difficultés de l’indexation des «tirailleurs sénégalais» est l’identification de leur lieu de naissance. Passons sur les mentions « inconnu » puisque de toute manière il va alors s’avérer impossible d’avoir une précision dépassant l’indication « cercle de … » , quand elle est connue.
Même quand un lieu est indiqué, il n’est pas commode de le relier à un lieu connu sous une dénomination moderne. On peut essayer de rechercher sur Google Maps, c’est sans doute ce que feront la plupart des gens puisque ce système est plutôt bien connu de tous. Malheureusement, il n’est pas très dense en ce qui concerne les noms de lieu de l’Afrique de l’Ouest. D’autres outils seront plus riches, comme « getamap.net » mais là non plus, il n’est pas facile de s’y retrouver quand ce qui est écrit sur une fiche ne ressemble guère à ce qui devrait l’être si on avait suivi à l’époque les transcriptions modernes.
Pour répondre à ce besoin, celui de trouver le lieu le plus probable, le mieux est d’avoir une liste et d’aller y rechercher celui qui correspond le plus, phonétiquement, à ce que l’on recherche et qui colle, plus ou moins, aux autres informations géographiques de la fiche, parfois une indication « cercle de … », d’ailleurs pas toujours très fiable, et le bureau de recrutement, quand on l’a reporté et quand il n’a pas été ajouté a posteriori par un fonctionnaire croyant bien faire, sans oublier les mentions de « dernier domicile connu » qui correspondent le plus souvent au lieu de naissance mais parfois orthographié différemment, ou plus lisible.
Il se trouve qu’une telle liste existe et mieux, elle est facile d’accès. Encore faut-il l’avoir localisée. Le site « geonames.org » permet outre d’afficher une carte et de trouver des lieux, ce que proposent aussi d’autres sites, mais surtout de télécharger en format tableur une liste de lieux avec notamment les coordonnées, latitude et longitude.
Le fichier obtenu est relativement gros, mais cela reste gérable. Il comporte un code lieu unique et pour chacun plusieurs transcription du nom, ce qui est assez pratique, ainsi que des informations sur la typologie du lieu (telles que lieux habité, campement, etc..).
Personnellement, j’ai dupliqué les lignes de façon à avoir une ligne pour chaque forme du nom et ainsi pouvoir effectuer une recherche.
Ensuite, on ne peut presque jamais être sûr à 100% que le lieu trouvé dans la nomenclature est bien celui de la fiche. Néanmoins, on peut essayer de confirmer en vérifiant la distance entre le point trouvé et le lieu correspondant au découpage administratif porté sur la fiche (cercle de …) ou au bureau de recrutement. Cette méthode est particulièrement utile pour les homonymes. On trouvera en bas de post une fonction permettant de calculer une distance dans Excel.
Enfin, il faut savoir quoi faire de ce lieu identifié avec plus ou moins de certitude. Chacun décidera de ce qu’il convient de faire. Quand je pense avoir identifié avec une certitude raisonnable le lieu figurant sur la fiche, je le saisis dans le cadre de l’indexation collaborative, en créant un lieu, comme cela est possible. En revanche, si le doute est plus grand, je m’abstiens mais je le note dans mes propres fiches qui me servent à constituer les listes et à alimenter les cartes que l’on peut trouver sur ce blog. Ce n’est certainement pas parfait, évidemment.
Example de fonction permettant de calculer la distance entre deux points
Sub test()
wDis = myDistance(11.7833, -3.2, 12.4638, -3.46075)
MsgBox wDis
End Sub
Function myDistance(plat1 As Double, plon1 As Double, plat2 As Double, plon2 As Double) As Double
Dim Lat1, Lat1Sens, Long1, Long1Sens
Dim Lat2, Lat2Sens, Long2, Long2Sens
Dim pi, buf1, buf2 As Double
pi = 3.14159
'calculs
If plat1 * plat2 > 0 Then
buf1 = Sin(Abs(plat1) * pi / 180) * Sin(Abs(plat2) * pi / 180)
Else
buf1 = Sin(Abs(plat1) * pi / 180) * -Sin(Abs(plat2) * pi / 180)
End If
If plon1 * plon2 > 0 Then
buf2 = Abs(plon1) - Abs(plon2)
Else
buf2 = Abs(plon1) + Abs(plon2)
End If
myDistance = ArcCosinus(buf1 + Cos(buf2 * pi / 180) * Cos(Abs(plat1) * pi / 180) * Cos(Abs(plat2) * pi / 180)) / pi * 10800
myDistance = myDistance * 1.852
If (plat1 = 0 And plon1 = 0) Or (plat2 = 0 And plon2 = 0) Then
myDistance = 0
End If
End Function
Private Function ArcCosinus(x As Double)
wParm = -x / Sqr(1 - x * x)
ArcCosinus = Atn(wParm) + 2 * Atn(1)
End Function