aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--README59
-rw-r--r--pbf2db/binarystream.py95
-rwxr-xr-xpbf2db/build_proto.sh3
-rw-r--r--pbf2db/fileformat.proto49
-rw-r--r--pbf2db/osmformat.proto225
-rwxr-xr-xpbf2db/pbf2db.py44
-rw-r--r--src/nodejs/start.js105
-rw-r--r--src/sql/exampleDatabase.test17
-rwxr-xr-xsrc/sql/generateData.sh18
-rw-r--r--src/sql/insert.sql600
10 files changed, 1215 insertions, 0 deletions
diff --git a/README b/README
index e69de29..8d10021 100644
--- a/README
+++ b/README
@@ -0,0 +1,59 @@
+===============
+osm@spline Xapi
+===============
+
+Aim
+============
+
+We like to rewrite some parts of the XApi needed for our own application. Our
+aim is not get a full implementation of the Xapi, but to answer only specific
+requests, at low latency. For this subset of Xapi we want completly cover the
+original api.
+
+Requests
+=============
+
+This is a list of example requests, we want to optimize.
+
+* xapi.spline.de/api/0.6/node[amenity=*]
+* xapi.spline.de/api/0.6/node[highway=busstop]
+* xapi.spline.de/api/0.6/node[bbox=-6,50,2,61]
+* xapi.spline.de/api/0.6/node[amenity=hospital][bbox=-6,50,2,61]
+
+a more formal description
+-------------------------
+
+We serve the node endpoint, but no others. We implment the tag based filtering,
+for only one tag and a bounding box.
+
+database shema
+================
+
+We keep data in a highly specioaliced shema, that allows us to prevent tables
+growing to big. And supports our requests at maximum speed.
+
+| CREATE TABLE <tagname>:<tagvalue> (
+| {bigint id}
+| {longitude float4},
+| {latitude float4},
+| {object varchar}
+| ) PRIMARY KEY id;
+
+Implmentation
+=============
+
+Teilprobleme:
+..............
+
+1. Database import
+
+mögliche Technologien:
+* Osmosis- plugin
+* selbst in python (Protobuf consumer, async pgsql schreiber)
+
+
+2. Web API
+..............
+
+mögliche Technologien:
+* node.js
diff --git a/pbf2db/binarystream.py b/pbf2db/binarystream.py
new file mode 100644
index 0000000..e1e0280
--- /dev/null
+++ b/pbf2db/binarystream.py
@@ -0,0 +1,95 @@
+from struct import *
+
+class BinaryStream:
+ def __init__(self, base_stream):
+ self.base_stream = base_stream
+
+ def readByte(self):
+ return self.base_stream.read(1)
+
+ def readBytes(self, length):
+ return self.base_stream.read(length)
+
+ def readChar(self):
+ return self.unpack('b')
+
+ def readUChar(self):
+ return self.unpack('B')
+
+ def readBool(self):
+ return self.unpack('?')
+
+ def readInt16(self):
+ return self.unpack('h', 2)
+
+ def readUInt16(self):
+ return self.unpack('H', 2)
+
+ def readInt32(self):
+ return self.unpack('i', 4)
+
+ def readUInt32(self):
+ return self.unpack('I', 4)
+
+ def readInt64(self):
+ return self.unpack('q', 8)
+
+ def readUInt64(self):
+ return self.unpack('Q', 8)
+
+ def readFloat(self):
+ return self.unpack('f', 4)
+
+ def readDouble(self):
+ return self.unpack('d', 8)
+
+ def readString(self):
+ length = self.readUInt16()
+ return self.unpack(str(length) + 's', length)
+
+ def writeBytes(self, value):
+ self.base_stream.write(value)
+
+ def writeChar(self, value):
+ self.pack('c', value)
+
+ def writeUChar(self, value):
+ self.pack('C', value)
+
+ def writeBool(self, value):
+ self.pack('?', value)
+
+ def writeInt16(self, value):
+ self.pack('h', value)
+
+ def writeUInt16(self, value):
+ self.pack('H', value)
+
+ def writeInt32(self, value):
+ self.pack('i', value)
+
+ def writeUInt32(self, value):
+ self.pack('I', value)
+
+ def writeInt64(self, value):
+ self.pack('q', value)
+
+ def writeUInt64(self, value):
+ self.pack('Q', value)
+
+ def writeFloat(self, value):
+ self.pack('f', value)
+
+ def writeDouble(self, value):
+ self.pack('d', value)
+
+ def writeString(self, value):
+ length = len(value)
+ self.writeUInt16(length)
+ self.pack(str(length) + 's', value)
+
+ def pack(self, fmt, data):
+ return self.writeBytes(pack(fmt, data))
+
+ def unpack(self, fmt, length = 1):
+ return unpack(fmt, self.readBytes(length))[0]
diff --git a/pbf2db/build_proto.sh b/pbf2db/build_proto.sh
new file mode 100755
index 0000000..53e9966
--- /dev/null
+++ b/pbf2db/build_proto.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+protoc --python_out=. fileformat.proto
+protoc --python_out=. osmformat.proto
diff --git a/pbf2db/fileformat.proto b/pbf2db/fileformat.proto
new file mode 100644
index 0000000..f1b540a
--- /dev/null
+++ b/pbf2db/fileformat.proto
@@ -0,0 +1,49 @@
+/** Copyright (c) 2010 Scott A. Crosby. <scott@sacrosby.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+package OSMPBF;
+
+//
+// STORAGE LAYER: Storing primitives.
+//
+
+message Blob {
+ optional bytes raw = 1; // No compression
+ optional int32 raw_size = 2; // When compressed, the uncompressed size
+
+ // Possible compressed versions of the data.
+ optional bytes zlib_data = 3;
+
+ // PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+ optional bytes lzma_data = 4;
+
+ // Formerly used for bzip2 compressed data. Depreciated in 2010.
+ optional bytes OBSOLETE_bzip2_data = 5 [deprecated=true]; // Don't reuse this tag number.
+}
+
+/* A file contains an sequence of fileblock headers, each prefixed by
+their length in network byte order, followed by a data block
+containing the actual data. types staring with a "_" are reserved.
+*/
+
+message BlobHeader {
+ required string type = 1;
+ optional bytes indexdata = 2;
+ required int32 datasize = 3;
+}
+
+
diff --git a/pbf2db/osmformat.proto b/pbf2db/osmformat.proto
new file mode 100644
index 0000000..eaad195
--- /dev/null
+++ b/pbf2db/osmformat.proto
@@ -0,0 +1,225 @@
+/** Copyright (c) 2010 Scott A. Crosby. <scott@sacrosby.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+package OSMPBF;
+
+/* OSM Binary file format
+
+This is the master schema file of the OSM binary file format. This
+file is designed to support limited random-access and future
+extendability.
+
+A binary OSM file consists of a sequence of FileBlocks (please see
+fileformat.proto). The first fileblock contains a serialized instance
+of HeaderBlock, followed by a sequence of PrimitiveBlock blocks that
+contain the primitives.
+
+Each primitiveblock is designed to be independently parsable. It
+contains a string table storing all strings in that block (keys and
+values in tags, roles in relations, usernames, etc.) as well as
+metadata containing the precision of coordinates or timestamps in that
+block.
+
+A primitiveblock contains a sequence of primitive groups, each
+containing primitives of the same type (nodes, densenodes, ways,
+relations). Coordinates are stored in signed 64-bit integers. Lat&lon
+are measured in units <granularity> nanodegrees. The default of
+granularity of 100 nanodegrees corresponds to about 1cm on the ground,
+and a full lat or lon fits into 32 bits.
+
+Converting an integer to a lattitude or longitude uses the formula:
+$OUT = IN * granularity / 10**9$. Many encoding schemes use delta
+coding when representing nodes and relations.
+
+*/
+
+//////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+
+/* Contains the file header. */
+
+message HeaderBlock {
+ optional HeaderBBox bbox = 1;
+ /* Additional tags to aid in parsing this dataset */
+ repeated string required_features = 4;
+ repeated string optional_features = 5;
+
+ optional string writingprogram = 16;
+ optional string source = 17; // From the bbox field.
+}
+
+
+/** The bounding box field in the OSM header. BBOX, as used in the OSM
+header. Units are always in nanodegrees -- they do not obey
+granularity rules. */
+
+message HeaderBBox {
+ required sint64 left = 1;
+ required sint64 right = 2;
+ required sint64 top = 3;
+ required sint64 bottom = 4;
+}
+
+
+///////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////
+
+
+message PrimitiveBlock {
+ required StringTable stringtable = 1;
+ repeated PrimitiveGroup primitivegroup = 2;
+
+ // Granularity, units of nanodegrees, used to store coordinates in this block
+ optional int32 granularity = 17 [default=100];
+ // Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
+ optional int64 lat_offset = 19 [default=0];
+ optional int64 lon_offset = 20 [default=0];
+
+// Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
+ optional int32 date_granularity = 18 [default=1000];
+
+
+ // Proposed extension:
+ //optional BBox bbox = XX;
+}
+
+// Group of OSMPrimitives. All primitives in a group must be the same type.
+message PrimitiveGroup {
+ repeated Node nodes = 1;
+ optional DenseNodes dense = 2;
+ repeated Way ways = 3;
+ repeated Relation relations = 4;
+ repeated ChangeSet changesets = 5;
+}
+
+
+/** String table, contains the common strings in each block.
+
+ Note that we reserve index '0' as a delimiter, so the entry at that
+ index in the table is ALWAYS blank and unused.
+
+ */
+message StringTable {
+ repeated bytes s = 1;
+}
+
+/* Optional metadata that may be included into each primitive. */
+message Info {
+ optional int32 version = 1 [default = -1];
+ optional int64 timestamp = 2;
+ optional int64 changeset = 3;
+ optional int32 uid = 4;
+ optional uint32 user_sid = 5; // String IDs
+}
+
+/** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes. */
+message DenseInfo {
+ repeated int32 version = 1 [packed = true];
+ repeated sint64 timestamp = 2 [packed = true]; // DELTA coded
+ repeated sint64 changeset = 3 [packed = true]; // DELTA coded
+ repeated sint32 uid = 4 [packed = true]; // DELTA coded
+ repeated sint32 user_sid = 5 [packed = true]; // String IDs for usernames. DELTA coded
+}
+
+
+// THIS IS STUB DESIGN FOR CHANGESETS. NOT USED RIGHT NOW.
+// TODO: REMOVE THIS?
+message ChangeSet {
+ required int64 id = 1;
+//
+// // Parallel arrays.
+// repeated uint32 keys = 2 [packed = true]; // String IDs.
+// repeated uint32 vals = 3 [packed = true]; // String IDs.
+//
+// optional Info info = 4;
+
+// optional int64 created_at = 8;
+// optional int64 closetime_delta = 9;
+// optional bool open = 10;
+// optional HeaderBBox bbox = 11;
+}
+
+
+message Node {
+ required sint64 id = 1;
+ // Parallel arrays.
+ repeated uint32 keys = 2 [packed = true]; // String IDs.
+ repeated uint32 vals = 3 [packed = true]; // String IDs.
+
+ optional Info info = 4; // May be omitted in omitmeta
+
+ required sint64 lat = 8;
+ required sint64 lon = 9;
+}
+
+/* Used to densly represent a sequence of nodes that do not have any tags.
+
+We represent these nodes columnwise as five columns: ID's, lats, and
+lons, all delta coded. When metadata is not omitted,
+
+We encode keys & vals for all nodes as a single array of integers
+containing key-stringid and val-stringid, using a stringid of 0 as a
+delimiter between nodes.
+
+ ( (<keyid> <valid>)* '0' )*
+ */
+
+message DenseNodes {
+ repeated sint64 id = 1 [packed = true]; // DELTA coded
+
+ //repeated Info info = 4;
+ optional DenseInfo denseinfo = 5;
+
+ repeated sint64 lat = 8 [packed = true]; // DELTA coded
+ repeated sint64 lon = 9 [packed = true]; // DELTA coded
+
+ // Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+ repeated int32 keys_vals = 10 [packed = true];
+}
+
+
+message Way {
+ required int64 id = 1;
+ // Parallel arrays.
+ repeated uint32 keys = 2 [packed = true];
+ repeated uint32 vals = 3 [packed = true];
+
+ optional Info info = 4;
+
+ repeated sint64 refs = 8 [packed = true]; // DELTA coded
+}
+
+message Relation {
+ enum MemberType {
+ NODE = 0;
+ WAY = 1;
+ RELATION = 2;
+ }
+ required int64 id = 1;
+
+ // Parallel arrays.
+ repeated uint32 keys = 2 [packed = true];
+ repeated uint32 vals = 3 [packed = true];
+
+ optional Info info = 4;
+
+ // Parallel arrays
+ repeated int32 roles_sid = 8 [packed = true];
+ repeated sint64 memids = 9 [packed = true]; // DELTA encoded
+ repeated MemberType types = 10 [packed = true];
+}
+
diff --git a/pbf2db/pbf2db.py b/pbf2db/pbf2db.py
new file mode 100755
index 0000000..c6089fc
--- /dev/null
+++ b/pbf2db/pbf2db.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+import osmformat_pb2
+import fileformat_pb2
+import sys
+import socket
+import zlib
+from binarystream import BinaryStream
+
+
+headerSizeMax = 64 * 1024
+bodySizeMax = 32*1024*1024
+
+f = open("berlin.osm.pbf")
+stream = BinaryStream(f)
+headerSize = socket.ntohl(stream.readUInt32());
+
+if headerSizeMax < headerSize:
+ raise ValueError("Header to long")
+
+headerbuff = stream.readBytes(headerSize)
+blobheader = fileformat_pb2.BlobHeader()
+blobheader.ParseFromString(headerbuff)
+bodysize = blobheader.datasize
+
+if bodySizeMax < bodysize:
+ raise ValueError("Body to fat")
+
+blobbuff = stream.readBytes(bodysize)
+blob = fileformat_pb2.Blob()
+blob.ParseFromString(blobbuff)
+
+if blob.raw != "":
+ rawstr = blob.raw
+else:
+ rawstr = zlib.decompress(blob.zlib_data)
+
+headerblock = osmformat_pb2.HeaderBlock()
+headerblock.ParseFromString(rawstr)
+
+print "Source:",headerblock.source
+print "Writingprog:",headerblock.writingprogram
+print "required features:",headerblock.required_features
+
diff --git a/src/nodejs/start.js b/src/nodejs/start.js
new file mode 100644
index 0000000..b92c757
--- /dev/null
+++ b/src/nodejs/start.js
@@ -0,0 +1,105 @@
+// imports
+var http = require('http'),
+ querystring = require('querystring'),
+ pg = require('pg'),
+ url = require('url'),
+ querystring = require('querystring');
+
+// config
+var connectionString = "pg://yves:test@localhost/xapi"
+
+
+function getDataBaseResult(tag,bbox,res){
+pg.connect(connectionString,function(err,client){
+ var the_result;
+ if(err){
+ console.log(err);
+ } else {
+ client.query(createQuery(tag,bbox),function(err,result){
+ if (err) {
+ console.log(err);
+ } else {
+ console.log(result);
+ res.write(result.rows);
+ res.end("/n");
+ }
+
+ });
+ }
+});
+}
+
+
+function createQuery(tag,bbox){
+ // FIXME: validate
+ var table = tag[0] + "#" + tag[1];
+ var filter = "";
+
+ // input validation
+ for(i=0;i<bbox.length;i++){
+ bbox[i] = parseFloat(bbox[i]);
+ }
+
+ if(bbox){
+ filter = "WHERE longitude > " + bbox[0] + " AND longitude < " + bbox[1] +
+ " AND latitude > " + bbox[2] + " AND latitude < " + bbox[3];
+ }
+ return "SELECT * FROM \"" + table + "\" " + filter + ";";
+}
+
+
+RegExp.escape= function(s) {
+ return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
+};
+
+
+var PATH_PREFIX = '/api/';
+var base_url_re = new RegExp('^' + RegExp.escape(PATH_PREFIX) +
+ '(node|way|relation|\\*)(.*)$')
+var filter_re = /\[(\w+=[^\]]+)\]/g;
+
+
+http.createServer(function (req, res) {
+
+ if (!base_url_re.test(req.url)) {
+ res.writeHead(404, {'Content-Type': 'text/plain; charset=utf8'});
+ res.end('Not Found\n');
+ }
+ base_url_re.exec(req.url);
+ var type = RegExp.$1, url_rest = querystring.unescape(RegExp.$2);
+
+ var filters = [];
+ while (v = filter_re.exec(url_rest)) {
+ filters.push(v[1]);
+ }
+ console.log(filters);
+
+ var tag;
+ var bbox;
+
+ for(i=0;i<filters.length;i++){
+ filters[i]=filters[i].split(/=/);
+ if(filters[i][0]=="bbox"){
+ bbox = filters[i][1].split(/,/);
+ }
+ else {
+ tag = filters[i];
+ }
+ }
+
+ console.log(tag);
+ console.log(bbox);
+
+ getDataBaseResult(tag,bbox,res);
+
+ res.writeHead(200, {'Content-Type': 'text/plain; charset=utf8', });
+
+ res.write('URL was: ' + req.url + '\n');
+ res.write('type: ' + type + '\n');
+ res.write('filters:\n');
+ filters.forEach(function(x) { res.write(' ' + x + '\n'); })
+ //res.end('\n');
+
+}).listen(8124, "127.0.0.1");
+
+console.log('Listening on http://127.0.0.1:8124/')
diff --git a/src/sql/exampleDatabase.test b/src/sql/exampleDatabase.test
new file mode 100644
index 0000000..a585ea6
--- /dev/null
+++ b/src/sql/exampleDatabase.test
@@ -0,0 +1,17 @@
+CREATE TABLE "anamnity#pub" (
+ id bigint PRIMARY KEY,
+ longitude float4,
+ latitude float4,
+ object varchar);
+
+CREATE TABLE "highway#tohell" (
+ id bigint PRIMARY KEY,
+ longitude float4,
+ latitude float4,
+ object varchar);
+
+CREATE TABLE "anamnity#resturant" (
+ id bigint PRIMARY KEY,
+ longitude float4,
+ latitude float4,
+ object varchar);
diff --git a/src/sql/generateData.sh b/src/sql/generateData.sh
new file mode 100755
index 0000000..7c4276e
--- /dev/null
+++ b/src/sql/generateData.sh
@@ -0,0 +1,18 @@
+#! /bin/bash
+rm -f insert.sql
+touch insert.sql
+
+for i in `seq 1 100`; do
+ echo "INSERT INTO \"anamnity#pub\" VALUES
+ ( $i , $i.5 , $i.7, 'pub nr $i'); " >> insert.sql
+done
+
+for i in `seq 1 100`; do
+ echo "INSERT INTO \"highway#tohell\" VALUES
+ ( $i , $i.5 , $i.7, 'highway nr $i'); " >> insert.sql
+done
+
+for i in `seq 1 100`; do
+ echo "INSERT INTO \"anamnity#resturant\" VALUES
+ ( $i , $i.5 , $i.7, 'restuarant nr $i'); " >> insert.sql
+done
diff --git a/src/sql/insert.sql b/src/sql/insert.sql
new file mode 100644
index 0000000..737d06f
--- /dev/null
+++ b/src/sql/insert.sql
@@ -0,0 +1,600 @@
+INSERT INTO "anamnity#pub" VALUES
+ ( 1 , 1.5 , 1.7, 'pub nr 1');
+INSERT INTO "anamnity#pub" VALUES
+ ( 2 , 2.5 , 2.7, 'pub nr 2');
+INSERT INTO "anamnity#pub" VALUES
+ ( 3 , 3.5 , 3.7, 'pub nr 3');
+INSERT INTO "anamnity#pub" VALUES
+ ( 4 , 4.5 , 4.7, 'pub nr 4');
+INSERT INTO "anamnity#pub" VALUES
+ ( 5 , 5.5 , 5.7, 'pub nr 5');
+INSERT INTO "anamnity#pub" VALUES
+ ( 6 , 6.5 , 6.7, 'pub nr 6');
+INSERT INTO "anamnity#pub" VALUES
+ ( 7 , 7.5 , 7.7, 'pub nr 7');
+INSERT INTO "anamnity#pub" VALUES
+ ( 8 , 8.5 , 8.7, 'pub nr 8');
+INSERT INTO "anamnity#pub" VALUES
+ ( 9 , 9.5 , 9.7, 'pub nr 9');
+INSERT INTO "anamnity#pub" VALUES
+ ( 10 , 10.5 , 10.7, 'pub nr 10');
+INSERT INTO "anamnity#pub" VALUES
+ ( 11 , 11.5 , 11.7, 'pub nr 11');
+INSERT INTO "anamnity#pub" VALUES
+ ( 12 , 12.5 , 12.7, 'pub nr 12');
+INSERT INTO "anamnity#pub" VALUES
+ ( 13 , 13.5 , 13.7, 'pub nr 13');
+INSERT INTO "anamnity#pub" VALUES
+ ( 14 , 14.5 , 14.7, 'pub nr 14');
+INSERT INTO "anamnity#pub" VALUES
+ ( 15 , 15.5 , 15.7, 'pub nr 15');
+INSERT INTO "anamnity#pub" VALUES
+ ( 16 , 16.5 , 16.7, 'pub nr 16');
+INSERT INTO "anamnity#pub" VALUES
+ ( 17 , 17.5 , 17.7, 'pub nr 17');
+INSERT INTO "anamnity#pub" VALUES
+ ( 18 , 18.5 , 18.7, 'pub nr 18');
+INSERT INTO "anamnity#pub" VALUES
+ ( 19 , 19.5 , 19.7, 'pub nr 19');
+INSERT INTO "anamnity#pub" VALUES
+ ( 20 , 20.5 , 20.7, 'pub nr 20');
+INSERT INTO "anamnity#pub" VALUES
+ ( 21 , 21.5 , 21.7, 'pub nr 21');
+INSERT INTO "anamnity#pub" VALUES
+ ( 22 , 22.5 , 22.7, 'pub nr 22');
+INSERT INTO "anamnity#pub" VALUES
+ ( 23 , 23.5 , 23.7, 'pub nr 23');
+INSERT INTO "anamnity#pub" VALUES
+ ( 24 , 24.5 , 24.7, 'pub nr 24');
+INSERT INTO "anamnity#pub" VALUES
+ ( 25 , 25.5 , 25.7, 'pub nr 25');
+INSERT INTO "anamnity#pub" VALUES
+ ( 26 , 26.5 , 26.7, 'pub nr 26');
+INSERT INTO "anamnity#pub" VALUES
+ ( 27 , 27.5 , 27.7, 'pub nr 27');
+INSERT INTO "anamnity#pub" VALUES
+ ( 28 , 28.5 , 28.7, 'pub nr 28');
+INSERT INTO "anamnity#pub" VALUES
+ ( 29 , 29.5 , 29.7, 'pub nr 29');
+INSERT INTO "anamnity#pub" VALUES
+ ( 30 , 30.5 , 30.7, 'pub nr 30');
+INSERT INTO "anamnity#pub" VALUES
+ ( 31 , 31.5 , 31.7, 'pub nr 31');
+INSERT INTO "anamnity#pub" VALUES
+ ( 32 , 32.5 , 32.7, 'pub nr 32');
+INSERT INTO "anamnity#pub" VALUES
+ ( 33 , 33.5 , 33.7, 'pub nr 33');
+INSERT INTO "anamnity#pub" VALUES
+ ( 34 , 34.5 , 34.7, 'pub nr 34');
+INSERT INTO "anamnity#pub" VALUES
+ ( 35 , 35.5 , 35.7, 'pub nr 35');
+INSERT INTO "anamnity#pub" VALUES
+ ( 36 , 36.5 , 36.7, 'pub nr 36');
+INSERT INTO "anamnity#pub" VALUES
+ ( 37 , 37.5 , 37.7, 'pub nr 37');
+INSERT INTO "anamnity#pub" VALUES
+ ( 38 , 38.5 , 38.7, 'pub nr 38');
+INSERT INTO "anamnity#pub" VALUES
+ ( 39 , 39.5 , 39.7, 'pub nr 39');
+INSERT INTO "anamnity#pub" VALUES
+ ( 40 , 40.5 , 40.7, 'pub nr 40');
+INSERT INTO "anamnity#pub" VALUES
+ ( 41 , 41.5 , 41.7, 'pub nr 41');
+INSERT INTO "anamnity#pub" VALUES
+ ( 42 , 42.5 , 42.7, 'pub nr 42');
+INSERT INTO "anamnity#pub" VALUES
+ ( 43 , 43.5 , 43.7, 'pub nr 43');
+INSERT INTO "anamnity#pub" VALUES
+ ( 44 , 44.5 , 44.7, 'pub nr 44');
+INSERT INTO "anamnity#pub" VALUES
+ ( 45 , 45.5 , 45.7, 'pub nr 45');
+INSERT INTO "anamnity#pub" VALUES
+ ( 46 , 46.5 , 46.7, 'pub nr 46');
+INSERT INTO "anamnity#pub" VALUES
+ ( 47 , 47.5 , 47.7, 'pub nr 47');
+INSERT INTO "anamnity#pub" VALUES
+ ( 48 , 48.5 , 48.7, 'pub nr 48');
+INSERT INTO "anamnity#pub" VALUES
+ ( 49 , 49.5 , 49.7, 'pub nr 49');
+INSERT INTO "anamnity#pub" VALUES
+ ( 50 , 50.5 , 50.7, 'pub nr 50');
+INSERT INTO "anamnity#pub" VALUES
+ ( 51 , 51.5 , 51.7, 'pub nr 51');
+INSERT INTO "anamnity#pub" VALUES
+ ( 52 , 52.5 , 52.7, 'pub nr 52');
+INSERT INTO "anamnity#pub" VALUES
+ ( 53 , 53.5 , 53.7, 'pub nr 53');
+INSERT INTO "anamnity#pub" VALUES
+ ( 54 , 54.5 , 54.7, 'pub nr 54');
+INSERT INTO "anamnity#pub" VALUES
+ ( 55 , 55.5 , 55.7, 'pub nr 55');
+INSERT INTO "anamnity#pub" VALUES
+ ( 56 , 56.5 , 56.7, 'pub nr 56');
+INSERT INTO "anamnity#pub" VALUES
+ ( 57 , 57.5 , 57.7, 'pub nr 57');
+INSERT INTO "anamnity#pub" VALUES
+ ( 58 , 58.5 , 58.7, 'pub nr 58');
+INSERT INTO "anamnity#pub" VALUES
+ ( 59 , 59.5 , 59.7, 'pub nr 59');
+INSERT INTO "anamnity#pub" VALUES
+ ( 60 , 60.5 , 60.7, 'pub nr 60');
+INSERT INTO "anamnity#pub" VALUES
+ ( 61 , 61.5 , 61.7, 'pub nr 61');
+INSERT INTO "anamnity#pub" VALUES
+ ( 62 , 62.5 , 62.7, 'pub nr 62');
+INSERT INTO "anamnity#pub" VALUES
+ ( 63 , 63.5 , 63.7, 'pub nr 63');
+INSERT INTO "anamnity#pub" VALUES
+ ( 64 , 64.5 , 64.7, 'pub nr 64');
+INSERT INTO "anamnity#pub" VALUES
+ ( 65 , 65.5 , 65.7, 'pub nr 65');
+INSERT INTO "anamnity#pub" VALUES
+ ( 66 , 66.5 , 66.7, 'pub nr 66');
+INSERT INTO "anamnity#pub" VALUES
+ ( 67 , 67.5 , 67.7, 'pub nr 67');
+INSERT INTO "anamnity#pub" VALUES
+ ( 68 , 68.5 , 68.7, 'pub nr 68');
+INSERT INTO "anamnity#pub" VALUES
+ ( 69 , 69.5 , 69.7, 'pub nr 69');
+INSERT INTO "anamnity#pub" VALUES
+ ( 70 , 70.5 , 70.7, 'pub nr 70');
+INSERT INTO "anamnity#pub" VALUES
+ ( 71 , 71.5 , 71.7, 'pub nr 71');
+INSERT INTO "anamnity#pub" VALUES
+ ( 72 , 72.5 , 72.7, 'pub nr 72');
+INSERT INTO "anamnity#pub" VALUES
+ ( 73 , 73.5 , 73.7, 'pub nr 73');
+INSERT INTO "anamnity#pub" VALUES
+ ( 74 , 74.5 , 74.7, 'pub nr 74');
+INSERT INTO "anamnity#pub" VALUES
+ ( 75 , 75.5 , 75.7, 'pub nr 75');
+INSERT INTO "anamnity#pub" VALUES
+ ( 76 , 76.5 , 76.7, 'pub nr 76');
+INSERT INTO "anamnity#pub" VALUES
+ ( 77 , 77.5 , 77.7, 'pub nr 77');
+INSERT INTO "anamnity#pub" VALUES
+ ( 78 , 78.5 , 78.7, 'pub nr 78');
+INSERT INTO "anamnity#pub" VALUES
+ ( 79 , 79.5 , 79.7, 'pub nr 79');
+INSERT INTO "anamnity#pub" VALUES
+ ( 80 , 80.5 , 80.7, 'pub nr 80');
+INSERT INTO "anamnity#pub" VALUES
+ ( 81 , 81.5 , 81.7, 'pub nr 81');
+INSERT INTO "anamnity#pub" VALUES
+ ( 82 , 82.5 , 82.7, 'pub nr 82');
+INSERT INTO "anamnity#pub" VALUES
+ ( 83 , 83.5 , 83.7, 'pub nr 83');
+INSERT INTO "anamnity#pub" VALUES
+ ( 84 , 84.5 , 84.7, 'pub nr 84');
+INSERT INTO "anamnity#pub" VALUES
+ ( 85 , 85.5 , 85.7, 'pub nr 85');
+INSERT INTO "anamnity#pub" VALUES
+ ( 86 , 86.5 , 86.7, 'pub nr 86');
+INSERT INTO "anamnity#pub" VALUES
+ ( 87 , 87.5 , 87.7, 'pub nr 87');
+INSERT INTO "anamnity#pub" VALUES
+ ( 88 , 88.5 , 88.7, 'pub nr 88');
+INSERT INTO "anamnity#pub" VALUES
+ ( 89 , 89.5 , 89.7, 'pub nr 89');
+INSERT INTO "anamnity#pub" VALUES
+ ( 90 , 90.5 , 90.7, 'pub nr 90');
+INSERT INTO "anamnity#pub" VALUES
+ ( 91 , 91.5 , 91.7, 'pub nr 91');
+INSERT INTO "anamnity#pub" VALUES
+ ( 92 , 92.5 , 92.7, 'pub nr 92');
+INSERT INTO "anamnity#pub" VALUES
+ ( 93 , 93.5 , 93.7, 'pub nr 93');
+INSERT INTO "anamnity#pub" VALUES
+ ( 94 , 94.5 , 94.7, 'pub nr 94');
+INSERT INTO "anamnity#pub" VALUES
+ ( 95 , 95.5 , 95.7, 'pub nr 95');
+INSERT INTO "anamnity#pub" VALUES
+ ( 96 , 96.5 , 96.7, 'pub nr 96');
+INSERT INTO "anamnity#pub" VALUES
+ ( 97 , 97.5 , 97.7, 'pub nr 97');
+INSERT INTO "anamnity#pub" VALUES
+ ( 98 , 98.5 , 98.7, 'pub nr 98');
+INSERT INTO "anamnity#pub" VALUES
+ ( 99 , 99.5 , 99.7, 'pub nr 99');
+INSERT INTO "anamnity#pub" VALUES
+ ( 100 , 100.5 , 100.7, 'pub nr 100');
+INSERT INTO "highway#tohell" VALUES
+ ( 1 , 1.5 , 1.7, 'highway nr 1');
+INSERT INTO "highway#tohell" VALUES
+ ( 2 , 2.5 , 2.7, 'highway nr 2');
+INSERT INTO "highway#tohell" VALUES
+ ( 3 , 3.5 , 3.7, 'highway nr 3');
+INSERT INTO "highway#tohell" VALUES
+ ( 4 , 4.5 , 4.7, 'highway nr 4');
+INSERT INTO "highway#tohell" VALUES
+ ( 5 , 5.5 , 5.7, 'highway nr 5');
+INSERT INTO "highway#tohell" VALUES
+ ( 6 , 6.5 , 6.7, 'highway nr 6');
+INSERT INTO "highway#tohell" VALUES
+ ( 7 , 7.5 , 7.7, 'highway nr 7');
+INSERT INTO "highway#tohell" VALUES
+ ( 8 , 8.5 , 8.7, 'highway nr 8');
+INSERT INTO "highway#tohell" VALUES
+ ( 9 , 9.5 , 9.7, 'highway nr 9');
+INSERT INTO "highway#tohell" VALUES
+ ( 10 , 10.5 , 10.7, 'highway nr 10');
+INSERT INTO "highway#tohell" VALUES
+ ( 11 , 11.5 , 11.7, 'highway nr 11');
+INSERT INTO "highway#tohell" VALUES
+ ( 12 , 12.5 , 12.7, 'highway nr 12');
+INSERT INTO "highway#tohell" VALUES
+ ( 13 , 13.5 , 13.7, 'highway nr 13');
+INSERT INTO "highway#tohell" VALUES
+ ( 14 , 14.5 , 14.7, 'highway nr 14');
+INSERT INTO "highway#tohell" VALUES
+ ( 15 , 15.5 , 15.7, 'highway nr 15');
+INSERT INTO "highway#tohell" VALUES
+ ( 16 , 16.5 , 16.7, 'highway nr 16');
+INSERT INTO "highway#tohell" VALUES
+ ( 17 , 17.5 , 17.7, 'highway nr 17');
+INSERT INTO "highway#tohell" VALUES
+ ( 18 , 18.5 , 18.7, 'highway nr 18');
+INSERT INTO "highway#tohell" VALUES
+ ( 19 , 19.5 , 19.7, 'highway nr 19');
+INSERT INTO "highway#tohell" VALUES
+ ( 20 , 20.5 , 20.7, 'highway nr 20');
+INSERT INTO "highway#tohell" VALUES
+ ( 21 , 21.5 , 21.7, 'highway nr 21');
+INSERT INTO "highway#tohell" VALUES
+ ( 22 , 22.5 , 22.7, 'highway nr 22');
+INSERT INTO "highway#tohell" VALUES
+ ( 23 , 23.5 , 23.7, 'highway nr 23');
+INSERT INTO "highway#tohell" VALUES
+ ( 24 , 24.5 , 24.7, 'highway nr 24');
+INSERT INTO "highway#tohell" VALUES
+ ( 25 , 25.5 , 25.7, 'highway nr 25');
+INSERT INTO "highway#tohell" VALUES
+ ( 26 , 26.5 , 26.7, 'highway nr 26');
+INSERT INTO "highway#tohell" VALUES
+ ( 27 , 27.5 , 27.7, 'highway nr 27');
+INSERT INTO "highway#tohell" VALUES
+ ( 28 , 28.5 , 28.7, 'highway nr 28');
+INSERT INTO "highway#tohell" VALUES
+ ( 29 , 29.5 , 29.7, 'highway nr 29');
+INSERT INTO "highway#tohell" VALUES
+ ( 30 , 30.5 , 30.7, 'highway nr 30');
+INSERT INTO "highway#tohell" VALUES
+ ( 31 , 31.5 , 31.7, 'highway nr 31');
+INSERT INTO "highway#tohell" VALUES
+ ( 32 , 32.5 , 32.7, 'highway nr 32');
+INSERT INTO "highway#tohell" VALUES
+ ( 33 , 33.5 , 33.7, 'highway nr 33');
+INSERT INTO "highway#tohell" VALUES
+ ( 34 , 34.5 , 34.7, 'highway nr 34');
+INSERT INTO "highway#tohell" VALUES
+ ( 35 , 35.5 , 35.7, 'highway nr 35');
+INSERT INTO "highway#tohell" VALUES
+ ( 36 , 36.5 , 36.7, 'highway nr 36');
+INSERT INTO "highway#tohell" VALUES
+ ( 37 , 37.5 , 37.7, 'highway nr 37');
+INSERT INTO "highway#tohell" VALUES
+ ( 38 , 38.5 , 38.7, 'highway nr 38');
+INSERT INTO "highway#tohell" VALUES
+ ( 39 , 39.5 , 39.7, 'highway nr 39');
+INSERT INTO "highway#tohell" VALUES
+ ( 40 , 40.5 , 40.7, 'highway nr 40');
+INSERT INTO "highway#tohell" VALUES
+ ( 41 , 41.5 , 41.7, 'highway nr 41');
+INSERT INTO "highway#tohell" VALUES
+ ( 42 , 42.5 , 42.7, 'highway nr 42');
+INSERT INTO "highway#tohell" VALUES
+ ( 43 , 43.5 , 43.7, 'highway nr 43');
+INSERT INTO "highway#tohell" VALUES
+ ( 44 , 44.5 , 44.7, 'highway nr 44');
+INSERT INTO "highway#tohell" VALUES
+ ( 45 , 45.5 , 45.7, 'highway nr 45');
+INSERT INTO "highway#tohell" VALUES
+ ( 46 , 46.5 , 46.7, 'highway nr 46');
+INSERT INTO "highway#tohell" VALUES
+ ( 47 , 47.5 , 47.7, 'highway nr 47');
+INSERT INTO "highway#tohell" VALUES
+ ( 48 , 48.5 , 48.7, 'highway nr 48');
+INSERT INTO "highway#tohell" VALUES
+ ( 49 , 49.5 , 49.7, 'highway nr 49');
+INSERT INTO "highway#tohell" VALUES
+ ( 50 , 50.5 , 50.7, 'highway nr 50');
+INSERT INTO "highway#tohell" VALUES
+ ( 51 , 51.5 , 51.7, 'highway nr 51');
+INSERT INTO "highway#tohell" VALUES
+ ( 52 , 52.5 , 52.7, 'highway nr 52');
+INSERT INTO "highway#tohell" VALUES
+ ( 53 , 53.5 , 53.7, 'highway nr 53');
+INSERT INTO "highway#tohell" VALUES
+ ( 54 , 54.5 , 54.7, 'highway nr 54');
+INSERT INTO "highway#tohell" VALUES
+ ( 55 , 55.5 , 55.7, 'highway nr 55');
+INSERT INTO "highway#tohell" VALUES
+ ( 56 , 56.5 , 56.7, 'highway nr 56');
+INSERT INTO "highway#tohell" VALUES
+ ( 57 , 57.5 , 57.7, 'highway nr 57');
+INSERT INTO "highway#tohell" VALUES
+ ( 58 , 58.5 , 58.7, 'highway nr 58');
+INSERT INTO "highway#tohell" VALUES
+ ( 59 , 59.5 , 59.7, 'highway nr 59');
+INSERT INTO "highway#tohell" VALUES
+ ( 60 , 60.5 , 60.7, 'highway nr 60');
+INSERT INTO "highway#tohell" VALUES
+ ( 61 , 61.5 , 61.7, 'highway nr 61');
+INSERT INTO "highway#tohell" VALUES
+ ( 62 , 62.5 , 62.7, 'highway nr 62');
+INSERT INTO "highway#tohell" VALUES
+ ( 63 , 63.5 , 63.7, 'highway nr 63');
+INSERT INTO "highway#tohell" VALUES
+ ( 64 , 64.5 , 64.7, 'highway nr 64');
+INSERT INTO "highway#tohell" VALUES
+ ( 65 , 65.5 , 65.7, 'highway nr 65');
+INSERT INTO "highway#tohell" VALUES
+ ( 66 , 66.5 , 66.7, 'highway nr 66');
+INSERT INTO "highway#tohell" VALUES
+ ( 67 , 67.5 , 67.7, 'highway nr 67');
+INSERT INTO "highway#tohell" VALUES
+ ( 68 , 68.5 , 68.7, 'highway nr 68');
+INSERT INTO "highway#tohell" VALUES
+ ( 69 , 69.5 , 69.7, 'highway nr 69');
+INSERT INTO "highway#tohell" VALUES
+ ( 70 , 70.5 , 70.7, 'highway nr 70');
+INSERT INTO "highway#tohell" VALUES
+ ( 71 , 71.5 , 71.7, 'highway nr 71');
+INSERT INTO "highway#tohell" VALUES
+ ( 72 , 72.5 , 72.7, 'highway nr 72');
+INSERT INTO "highway#tohell" VALUES
+ ( 73 , 73.5 , 73.7, 'highway nr 73');
+INSERT INTO "highway#tohell" VALUES
+ ( 74 , 74.5 , 74.7, 'highway nr 74');
+INSERT INTO "highway#tohell" VALUES
+ ( 75 , 75.5 , 75.7, 'highway nr 75');
+INSERT INTO "highway#tohell" VALUES
+ ( 76 , 76.5 , 76.7, 'highway nr 76');
+INSERT INTO "highway#tohell" VALUES
+ ( 77 , 77.5 , 77.7, 'highway nr 77');
+INSERT INTO "highway#tohell" VALUES
+ ( 78 , 78.5 , 78.7, 'highway nr 78');
+INSERT INTO "highway#tohell" VALUES
+ ( 79 , 79.5 , 79.7, 'highway nr 79');
+INSERT INTO "highway#tohell" VALUES
+ ( 80 , 80.5 , 80.7, 'highway nr 80');
+INSERT INTO "highway#tohell" VALUES
+ ( 81 , 81.5 , 81.7, 'highway nr 81');
+INSERT INTO "highway#tohell" VALUES
+ ( 82 , 82.5 , 82.7, 'highway nr 82');
+INSERT INTO "highway#tohell" VALUES
+ ( 83 , 83.5 , 83.7, 'highway nr 83');
+INSERT INTO "highway#tohell" VALUES
+ ( 84 , 84.5 , 84.7, 'highway nr 84');
+INSERT INTO "highway#tohell" VALUES
+ ( 85 , 85.5 , 85.7, 'highway nr 85');
+INSERT INTO "highway#tohell" VALUES
+ ( 86 , 86.5 , 86.7, 'highway nr 86');
+INSERT INTO "highway#tohell" VALUES
+ ( 87 , 87.5 , 87.7, 'highway nr 87');
+INSERT INTO "highway#tohell" VALUES
+ ( 88 , 88.5 , 88.7, 'highway nr 88');
+INSERT INTO "highway#tohell" VALUES
+ ( 89 , 89.5 , 89.7, 'highway nr 89');
+INSERT INTO "highway#tohell" VALUES
+ ( 90 , 90.5 , 90.7, 'highway nr 90');
+INSERT INTO "highway#tohell" VALUES
+ ( 91 , 91.5 , 91.7, 'highway nr 91');
+INSERT INTO "highway#tohell" VALUES
+ ( 92 , 92.5 , 92.7, 'highway nr 92');
+INSERT INTO "highway#tohell" VALUES
+ ( 93 , 93.5 , 93.7, 'highway nr 93');
+INSERT INTO "highway#tohell" VALUES
+ ( 94 , 94.5 , 94.7, 'highway nr 94');
+INSERT INTO "highway#tohell" VALUES
+ ( 95 , 95.5 , 95.7, 'highway nr 95');
+INSERT INTO "highway#tohell" VALUES
+ ( 96 , 96.5 , 96.7, 'highway nr 96');
+INSERT INTO "highway#tohell" VALUES
+ ( 97 , 97.5 , 97.7, 'highway nr 97');
+INSERT INTO "highway#tohell" VALUES
+ ( 98 , 98.5 , 98.7, 'highway nr 98');
+INSERT INTO "highway#tohell" VALUES
+ ( 99 , 99.5 , 99.7, 'highway nr 99');
+INSERT INTO "highway#tohell" VALUES
+ ( 100 , 100.5 , 100.7, 'highway nr 100');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 1 , 1.5 , 1.7, 'restuarant nr 1');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 2 , 2.5 , 2.7, 'restuarant nr 2');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 3 , 3.5 , 3.7, 'restuarant nr 3');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 4 , 4.5 , 4.7, 'restuarant nr 4');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 5 , 5.5 , 5.7, 'restuarant nr 5');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 6 , 6.5 , 6.7, 'restuarant nr 6');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 7 , 7.5 , 7.7, 'restuarant nr 7');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 8 , 8.5 , 8.7, 'restuarant nr 8');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 9 , 9.5 , 9.7, 'restuarant nr 9');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 10 , 10.5 , 10.7, 'restuarant nr 10');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 11 , 11.5 , 11.7, 'restuarant nr 11');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 12 , 12.5 , 12.7, 'restuarant nr 12');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 13 , 13.5 , 13.7, 'restuarant nr 13');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 14 , 14.5 , 14.7, 'restuarant nr 14');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 15 , 15.5 , 15.7, 'restuarant nr 15');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 16 , 16.5 , 16.7, 'restuarant nr 16');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 17 , 17.5 , 17.7, 'restuarant nr 17');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 18 , 18.5 , 18.7, 'restuarant nr 18');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 19 , 19.5 , 19.7, 'restuarant nr 19');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 20 , 20.5 , 20.7, 'restuarant nr 20');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 21 , 21.5 , 21.7, 'restuarant nr 21');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 22 , 22.5 , 22.7, 'restuarant nr 22');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 23 , 23.5 , 23.7, 'restuarant nr 23');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 24 , 24.5 , 24.7, 'restuarant nr 24');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 25 , 25.5 , 25.7, 'restuarant nr 25');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 26 , 26.5 , 26.7, 'restuarant nr 26');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 27 , 27.5 , 27.7, 'restuarant nr 27');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 28 , 28.5 , 28.7, 'restuarant nr 28');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 29 , 29.5 , 29.7, 'restuarant nr 29');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 30 , 30.5 , 30.7, 'restuarant nr 30');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 31 , 31.5 , 31.7, 'restuarant nr 31');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 32 , 32.5 , 32.7, 'restuarant nr 32');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 33 , 33.5 , 33.7, 'restuarant nr 33');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 34 , 34.5 , 34.7, 'restuarant nr 34');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 35 , 35.5 , 35.7, 'restuarant nr 35');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 36 , 36.5 , 36.7, 'restuarant nr 36');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 37 , 37.5 , 37.7, 'restuarant nr 37');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 38 , 38.5 , 38.7, 'restuarant nr 38');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 39 , 39.5 , 39.7, 'restuarant nr 39');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 40 , 40.5 , 40.7, 'restuarant nr 40');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 41 , 41.5 , 41.7, 'restuarant nr 41');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 42 , 42.5 , 42.7, 'restuarant nr 42');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 43 , 43.5 , 43.7, 'restuarant nr 43');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 44 , 44.5 , 44.7, 'restuarant nr 44');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 45 , 45.5 , 45.7, 'restuarant nr 45');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 46 , 46.5 , 46.7, 'restuarant nr 46');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 47 , 47.5 , 47.7, 'restuarant nr 47');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 48 , 48.5 , 48.7, 'restuarant nr 48');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 49 , 49.5 , 49.7, 'restuarant nr 49');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 50 , 50.5 , 50.7, 'restuarant nr 50');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 51 , 51.5 , 51.7, 'restuarant nr 51');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 52 , 52.5 , 52.7, 'restuarant nr 52');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 53 , 53.5 , 53.7, 'restuarant nr 53');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 54 , 54.5 , 54.7, 'restuarant nr 54');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 55 , 55.5 , 55.7, 'restuarant nr 55');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 56 , 56.5 , 56.7, 'restuarant nr 56');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 57 , 57.5 , 57.7, 'restuarant nr 57');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 58 , 58.5 , 58.7, 'restuarant nr 58');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 59 , 59.5 , 59.7, 'restuarant nr 59');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 60 , 60.5 , 60.7, 'restuarant nr 60');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 61 , 61.5 , 61.7, 'restuarant nr 61');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 62 , 62.5 , 62.7, 'restuarant nr 62');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 63 , 63.5 , 63.7, 'restuarant nr 63');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 64 , 64.5 , 64.7, 'restuarant nr 64');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 65 , 65.5 , 65.7, 'restuarant nr 65');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 66 , 66.5 , 66.7, 'restuarant nr 66');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 67 , 67.5 , 67.7, 'restuarant nr 67');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 68 , 68.5 , 68.7, 'restuarant nr 68');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 69 , 69.5 , 69.7, 'restuarant nr 69');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 70 , 70.5 , 70.7, 'restuarant nr 70');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 71 , 71.5 , 71.7, 'restuarant nr 71');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 72 , 72.5 , 72.7, 'restuarant nr 72');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 73 , 73.5 , 73.7, 'restuarant nr 73');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 74 , 74.5 , 74.7, 'restuarant nr 74');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 75 , 75.5 , 75.7, 'restuarant nr 75');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 76 , 76.5 , 76.7, 'restuarant nr 76');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 77 , 77.5 , 77.7, 'restuarant nr 77');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 78 , 78.5 , 78.7, 'restuarant nr 78');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 79 , 79.5 , 79.7, 'restuarant nr 79');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 80 , 80.5 , 80.7, 'restuarant nr 80');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 81 , 81.5 , 81.7, 'restuarant nr 81');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 82 , 82.5 , 82.7, 'restuarant nr 82');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 83 , 83.5 , 83.7, 'restuarant nr 83');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 84 , 84.5 , 84.7, 'restuarant nr 84');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 85 , 85.5 , 85.7, 'restuarant nr 85');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 86 , 86.5 , 86.7, 'restuarant nr 86');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 87 , 87.5 , 87.7, 'restuarant nr 87');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 88 , 88.5 , 88.7, 'restuarant nr 88');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 89 , 89.5 , 89.7, 'restuarant nr 89');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 90 , 90.5 , 90.7, 'restuarant nr 90');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 91 , 91.5 , 91.7, 'restuarant nr 91');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 92 , 92.5 , 92.7, 'restuarant nr 92');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 93 , 93.5 , 93.7, 'restuarant nr 93');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 94 , 94.5 , 94.7, 'restuarant nr 94');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 95 , 95.5 , 95.7, 'restuarant nr 95');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 96 , 96.5 , 96.7, 'restuarant nr 96');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 97 , 97.5 , 97.7, 'restuarant nr 97');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 98 , 98.5 , 98.7, 'restuarant nr 98');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 99 , 99.5 , 99.7, 'restuarant nr 99');
+INSERT INTO "anamnity#resturant" VALUES
+ ( 100 , 100.5 , 100.7, 'restuarant nr 100');