Hoe zijn de coordinaten opgebouwd

Geachte mensen,

Na de dump van laatste gids (zm4-2004) is er nog al wat bijgekomen die kaartjes zijn echt tof.

Maar naar bestudering van de waarde in de beide tabelen gis_ kom ik toch met een vraagje.

zijn de waarden in de velden x_low-y_low en x_hi-y_hi gerelateerd aan de daad werkelijke coordinaten of zijn dit eigen getallen.

Grtz

John

De coordindaten in de gis_ tabellen zijn rijksdriehoekscoordinaten. Dit is een othogonaal lineair assenstelsel. Het referentiepunt is de kerktoren van Amersfoort. Het nulpunt van het stelsel ligt ergens bij Lille. Dit is gedaan om te zorgen dat de x en y coordinaten binnen Nederland niet dezelfde waardes kunnen hebben, zodat je aan een coordinaat altijd kan zien of het een x of een y coordinaat is, en je ze niet per ongeluk kan verwisselen.

1 eenheid in RD is een meter. Omdat het een lineair stelsel is kan je de positie op een kaartje berekenen aan de hand van de informatie in gis_postalcoords. Hoe dat moet is al beschreven als commentaar in mysql_create.sql

[code]
#############################################################################

gis_gifinfo vertelt welk kaartje welk gebied bestrijkt

om de kaartjes voor een punt x,y te vinden de volgende query

select seqno, scale

from gis_gifinfo

where x_low < x and x_hi > x and y_low < y and y_hi > y;

of om in een keer van postcode 1234ab naar kaartjes te gaan

select distinct seqno, scale, x_low, y_low, x_hi, y_hi

from gis_postalcoords, gis_gifinfo

where postalcode=‘1234ab’

and x_low < rd_x and x_hi > rd_x and y_low < rd_y and y_hi > rd_y;

en dan (en dit moet ook nog wel in SQL kunnen denk ik)

$x_pos = (500*($line[“rd_x”] - $line[“x_low”]))/$mapsize;

$y_pos = 500-(500*($line[“rd_y”] - $line[“y_low”]))/$mapsize;

#############################################################################[/code]

Het RD-stelsel wordt beheerd door het kadaster ism AGI. Je kan meer informatie vinden op http://www.rdnap.nl/

De meeste GPS ontvangers gebruiken WGS84 coordinaten. We zijn momenteel al bezig met een stuk Java code die RD coordinaten naar WGS84 coordinaten kan omzetten. Dan kan je dus voor elke postcode in Nederland de GPS coordinaten berekenen aan de hand van de RD coordinaten. Dit wordt of een los Java programma, of zelfs misschien onderdeel van Foondump.

RGJ bedankt voor de info

Heb me er in de tussen tijd een beetje in verdiept

De gifjes bestaan uit 5 gifjes uit het zoom gebied 5 (waarvan er 2 gewoon buiten de grens vallen zo te zien dus wit is) (dit zijn de kaartjes 1410-1414)
Ieder hoofdkaartje is weer verdeeld in 9 kleinere kaartjes (indien natuurlijk gevuld) dit is zoom level 4 (theoretisch zouden er hier 59=45 van zijn maar in ons geval 20)
Ook de kaartjes van zoomlevel 4 zijn weer verdeeld in 9 kaartjes welke het level 3 voor stellen (theoretisch zouden er hier 5
99=405 van zijn maar in ons geval 143)
De kaartjes van zoom level 3 zijn ook weer onderverdeeld in 9 kaarjes welke het huidige laagste level voor stellen (theoretisch zouden er hier 5
999=3645 van zijn maar in ons geval 1248)

Het ziet er zo manier vrij duidelijk uit hoe het is opgebouwd.

Ik zag net ook nog in het forum een oude vraag terug keren waarin iemand wel iets kon maken om betere overloop van de gifjes te krijgen als een locatie op een rand komt te liggen.

Leuke ontwikkelingen

John
[/img]

Hallo,

Na de dump van de nieuwe database hebben we er een aantal tabel bij gekregen 1 van deze tabelen bevat de postcode en de locatie in RD formaat

Via deze link kan men een omrekening doen van RD formaat naar ETRS89 (lengte en breedt in graden ect) formaat zoals wordt gebruikt op je GPS ect.

http://www.rdnap.nl/cgi-bin/rdetrs.pl

Om even snel bij de postcode de RD te vinden zou je volgende scripjes kunnen gebruiken (allen snel gemaakt in een mYsSql tool. Even met sleur en pleur in 3 .php bestandjes zeten en je wachtwoord op dae database aan passen

eerste conect.php (voor de inlog op de databse)

<?php
   $db = mysql_connect("localhost", "username", "password");
   if( !$db )
   {
      die("Error connecting to the Server");
      exit;
   }
   $result = mysql_select_db("foondump2004", $db);
   if( !$result )
   {
      die("Error selecting Database");
      exit;
   }
?>

Tweede postcode.php (voor het vullen van het searchveld postcode

<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Results</title>
</head>
<body>
<form method="POST" action="results.php" name="edit_form">
<div align="center">
     <center>
     <table border="0" cellpadding="0" cellspacing="0" width="50%">
  <tr>
     <td width="50%"><font face="Arial" size="2">Postcode</font></td>
     <td width="50%"><font face="Arial" size="2"><input type="text" name="postalcode" size="20" value=""></font></td>
  </tr>
    <tr>
      <td width="50%">
        <p align="left"><font face="Arial" size="2"><input type="submit" value="Send Data" name="go"></font></td>
      <td width="50%">
        <p align="right"><font face="Arial" size="2"><input type="reset" value="Clear Form" name="clear"></font></td>
    </tr>
     </table>
     </center>
</div>
</form>
</body>
</html>

En de derde result.php (voor her resultaat blad met de RD code

[code]

<?php include("connect.php"); if( !$postalcode ) die("Error loading this page. Parameters not informed."); ?> Results
<?php $query = "SELECT
gis_postalcoords.postalcode,

gis_postalcoords.rd_x,

gis_postalcoords.rd_y

FROM

gis_postalcoords

WHERE

gis_postalcoords.postalcode='$postalcode'";
$result = mysql_query($query,$db);
 if( !$result )
 {
    die("Error executing query");
 }
 echo "<tr>";
 echo "<td align=CENTER bgcolor='#000000'><font face='Arial' size='2' color='#FFFFFF'>Postcode</font></td>";
 echo "<td align=CENTER bgcolor='#000000'><font face='Arial' size='2' color='#FFFFFF'>X-As</font></td>";
 echo "<td align=CENTER bgcolor='#000000'><font face='Arial' size='2' color='#FFFFFF'>Y-as</font></td>";
 echo "</tr>";
 $nrows = mysql_num_rows($result);
 $row   = 0;
 while( $row < $nrows )
 {
		  $postalcode = mysql_result($result,$row,"postalcode");
		  $rd_x = mysql_result($result,$row,"rd_x");
		  $rd_y = mysql_result($result,$row,"rd_y");
		  echo "<tr>";
    echo " <td align='LEFT' bgcolor='#FFFF00'><font face='Arial' size='2' color='#000000'>".$postalcode."</font></td>";
    echo " <td align='LEFT' bgcolor='#FFFF00'><font face='Arial' size='2' color='#000000'>".$rd_x."</font></td>";
    echo " <td align='LEFT' bgcolor='#FFFF00'><font face='Arial' size='2' color='#000000'>".$rd_y."</font></td>";
    echo "</tr>";
    $row++;
 }
 mysql_free_result($result);
 mysql_close();

?>


[/code]

Hoi John,

Bedankt voor jouw PHP source code. Ik denk dat anderen hierop voort kunnen borduren. Zelf zat ik een beetje te zoeken naar de formule die gebruikt moet worden voor de conversie. Of ga je de rdnap.nl site onderwater aanroepen?

De vriendelijke groet Jan Marco

Ik ben bezig een Java implementatie te maken.

Hallo heren,

Daar ik/wij ook nog als eens wat te maken had/heb wat een exate locatie zou zijn of hoe je het snelst je locatie kunt controleren. maakten we nog als gebruik van de meetpunten van de Rijks driehoek meeting. (land meter’s, en archeologen)

Ik heb op de site die RGJ al noemde een bestand gevonden waarin alle 5416 RD ounten zijn opgenomen deze heb ik geconverteerd naar een extra MySql tabel gis_rdcoords.

Nu ben ik bezig om een kleine php routine te schrijven die “even” uit rekend waar het dichts bijzijnde RD punt is tov een postcode.
De eerste proefjes zij natuurlijk op niets uit gelopen maar ik wil jullie toch deze info (de mysql tabel) niet onthouden.

Ik heb de file genaamd foondump2004_gis_rdcoords.rar geplaatst in de upload area directory genaamd coordinaten.

Ook heb ik wat reken methodiek bij elkaar gezocht om afstanden tussen 2 postcodes uit een te zetten. Dit punt is vroeger in het oude forum ook al eens aan bod geweest met RGJ en Jan Marco. Wellicht hebben jullie nog van deze oude input ergens nog een een kopietje staan.

Met vriendelijke groet,

John

Hoi John,

Het bereken van de lengte tussen twee punten gewoon pythagoras gebruiken. Zie ook Pythagorean Theorem and its many proofs De schuine zijde geeft de lengte aan tussen twee coordinaten.

Tip: Ik kan mij herinneren dat in een oude versie van MPS (van XIM) deze berekening in PHP werd gedaan.

De vriendelijke groet Jan Marco

Jan Marco> Ik denk niet dat daar de complexiteit ligt.

John> Je hebt het over de 5416 RD punten. Dat zijn de referentiepunten aan de hand waarvan de andere punten worden bepaald, zeg maar om het systeem te kunnen ‘ijken’.
In de gis_postalcoords tabel vind je voor elke postcode al de echte rijksdriehoekscoordinaten. Je hoeft dus helemaal niet naar het dichtsbijzijnde ijkpunt te gaan en vanaf daar te rekenen, je kan gewoon de punten uit de tabel halen.

Omdat een postcodegebied vrij groot kan zijn bevat de tabel vaak zelfs meerdere coordinaten per postcode.

Voorbeeld. We willen de afstand van Jan Marco naar het Binnenhof weten. Jan Marco zijn postcode is 7523rs en die van het Binnenhof is 2513AA.

[code]mysql> select * from gis_postalcoords where postalcode=‘7523rs’;
±-------±-----------±-------±-------+
| id | postalcode | rd_x | rd_y |
±-------±-----------±-------±-------+
| 809981 | 7523rs | 257865 | 473592 |
| 809982 | 7523rs | 257728 | 473617 |
| 809983 | 7523rs | 257865 | 473592 |
| 809984 | 7523rs | 257752 | 473586 |
| 809985 | 7523rs | 257837 | 473584 |
±-------±-----------±-------±-------+
5 rows in set (0.00 sec)

mysql> select avg(rd_x), avg(rd_y) from gis_postalcoords where postalcode=‘7523rs’;
±------------±------------+
| avg(rd_x) | avg(rd_y) |
±------------±------------+
| 257809.4000 | 473594.2000 |
±------------±------------+
1 row in set (0.00 sec)

mysql> select avg(rd_x), avg(rd_y) from gis_postalcoords where postalcode=‘2513aa’;
±-----------±------------+
| avg(rd_x) | avg(rd_y) |
±-----------±------------+
| 81328.0000 | 455113.6667 |
±-----------±------------+
1 row in set (0.03 sec)
[/code]

Pythagoras:
Afstand = SQRT((257809.4 - 81328)^2 + (473594.2 - 455133.6667)^2)= 177444 meter.

… 177444 meter.

Als john z’n heli vandaag vanwege de stakingen aan de grond moet blijven wordt het 203900 meter:
http://www.routenet.nl/asp/route.asp?task=route&language=NL&poilayer=&zipcode=2513AA&street=&city=&country=NL&zipcode=7523rs&street=&city=&country=NL&yp_searchtype=yellow_who&yp_search=&yp_location=&address=479572_6806888_Binnenhof_2+-+22_2513AA_'S-GRAVENHAGE__NL_5&address_start=766464_6836127_Waalstraat_304+-+388_7523RS_ENSCHEDE__NL_5&routeBtn.x=78&routeBtn.y=9][b]www.routenet.nl[/b

Hallo,

thanks voor deze uit een zetting want zo goed ben ik natuurlijk nu ook weer niet. Ik ga hier zeker nog even verder mee.
Maar wat ik eigenlijk er mee wilde gaan doen is gewoon snel de desbetreefde dichts bijzijnde RD punt vinden zodat je niet mee moeilijk in je boek van de voormallige geografische dienst hoeft te bladeren en te zoeken. Daar ze in die gids niet op een volgend zijn bleef je vaak zoeken. Staks voor deze mensen een klein scripje om snel en doeltreffende dit staf kaartje te vinden zodat hun onderzoek kan worden gerelateerd aan dit punt.
In de toekomst zal dit allemaal verdwijnen en gewoon de GPS coördinaten worden gebruik maar ook daar heb je de referentie punten weer verdeeld over nederland maar deze dienst kost tot op het heden een maandelijkse fee.

Even voor weerman ik kon gewoon vliegen met me Heli dus het was maar 177589 meter daar ik bij op stijgen en landen even de rechte lijn moest onwijken.

Groetjes John