[osmctools] 01/12: Imported Upstream version 0.6

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Mon Feb 15 06:21:13 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository osmctools.

commit c84b63128c3675f265f819f8e564d5dd9c33a45b
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Feb 15 06:57:38 2016 +0100

    Imported Upstream version 0.6
---
 src/Makefile.am  |   4 +-
 src/osmconvert.c | 495 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 src/osmupdate.c  |   9 +-
 3 files changed, 472 insertions(+), 36 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 1cff088..c76b086 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,9 +6,9 @@ endif
 
 if ENABLE_OSMCONVERT
 osmconvert_SOURCES = osmconvert.c
-osmconvert_LDFLAGS = -lz
+osmconvert_LDADD = -lz
 endif
 
 osmfilter_SOURCES = osmfilter.c
 
-osmupdate_SOURCES = osmupdate.c
+osmupdate_SOURCES = osmupdate.c
\ No newline at end of file
diff --git a/src/osmconvert.c b/src/osmconvert.c
index 94c31ed..159689b 100644
--- a/src/osmconvert.c
+++ b/src/osmconvert.c
@@ -1,10 +1,10 @@
-// osmconvert 2015-04-13 14:20
-#define VERSION "0.8.4"
+// osmconvert 2016-02-12 20:30
+#define VERSION "0.8.5"
 //
 // compile this file:
 // gcc osmconvert.c -lz -O3 -o osmconvert
 //
-// (c) 2011..2015 Markus Weber, Nuernberg
+// (c) 2011..2016 Markus Weber, Nuernberg
 // Richard Russo contributed the initiative to --add-bbox-tags option
 //
 // This program is free software; you can redistribute it and/or
@@ -31,9 +31,11 @@ const char* shorthelptext=
 "--complete-ways           do not clip ways at the borders\n"
 "--complex-ways            do not clip multipolygons at the borders\n"
 "--all-to-nodes            convert ways and relations to nodes\n"
-"--add-bbox-tags           adds bbox tags to ways and relations\n"
-"--add-bboxarea-tags       adds tags for estimated bbox areas\n"
-"--add-bboxweight-tags     adds tags for log2 of bbox areas\n"
+"--add-bbox-tags           add bbox tags to ways and relations\n"
+"--add-bboxarea-tags       add tags for estimated bbox areas\n"
+"--add-bboxweight-tags     add tags for log2 of bbox areas\n"
+"--add-bboxwidth-tags      add tags for estimated bbox widths\n"
+"--add-bboxwidthweight-tags add tags for log2 of bbox widths\n"
 "--object-type-offset=<id> offset for ways/relations if --all-to-nodes\n"
 "--max-objects=<n>         space for --all-to-nodes, 1 obj. = 16 bytes\n"
 "--drop-broken-refs        delete references to excluded nodes\n"
@@ -137,7 +139,7 @@ const char* helptext=
 "--add-bbox-tags\n"
 "        This option adds a tag with a bounding box to each object.\n"
 "        The tag will contain the border coordinates in this order:\n"
-"        min Longitude, min Latitude, max Longitude , max Latitude.\n"
+"        min Longitude, min Latitude, max Longitude, max Latitude.\n"
 "        e.g.:  <tag k=\"bBox\" v=\"-0.5000,51.0000,0.5000,52.0000\"/>\n"
 "\n"
 "--add-bboxarea-tags\n"
@@ -150,6 +152,16 @@ const char* helptext=
 "        of each way and each relation.\n"
 "        For example:  <tag k=\"bBoxWeight\" v=\"20\"/>\n"
 "\n"
+"--add-bboxwidth-tags\n"
+"        A tag for an estimated width value for the bbox is added to\n"
+"        each way and each relation. The unit is meters.\n"
+"        For example:  <tag k=\"bBoxWidth\" v=\"825\"/>\n"
+"\n"
+"--add-bboxwidthweight-tags\n"
+"        This option will add the binary logarithm of the bbox width\n"
+"        of each way and each relation.\n"
+"        For example:  <tag k=\"bBoxWidthWeight\" v=\"10\"/>\n"
+"\n"
 "--object-type-offset=<id offset>\n"
 "        If applying the --all-to-nodes option as explained above, you\n"
 "        may adjust the id offset. For example:\n"
@@ -318,7 +330,7 @@ const char* helptext=
 "-o=<outfile>\n"
 "        Standard output will be rerouted to the specified file.\n"
 "        If no output format has been specified, the program will\n"
-"        rely  the file name extension.\n"
+"        rely on the file name\'s extension.\n"
 "\n"
 "-t=<tempfile>\n"
 "        If borders are to be applied or broken references to be\n"
@@ -540,13 +552,19 @@ static bool global_alltonodes= false;
   // convert all ways and all relations to nodes
 static bool global_add= false;
   // add at least one tag shall be added;
-  // global_add==global_addbbox|global_addbboxarea|global_addbboxweight
+  // global_add == global_addbbox || global_addbboxarea ||
+  //               global_addbboxweight ||
+  //               global_addbboxwidth || global_addbboxwidthweight
 static bool global_addbbox= false;
   // add bBox tags to ways and relations
 static bool global_addbboxarea= false;
   // add bBoxArea tags to ways and relations
 static bool global_addbboxweight= false;
   // add bBoxWeight tags to ways and relations
+static bool global_addbboxwidth= false;
+  // add bBoxWidth tags to ways and relations
+static bool global_addbboxwidthweight= false;
+  // add bBoxWidthWeight tags to ways and relations
 static int64_t global_maxobjects= 25000000;
 static int64_t global_otypeoffset10= INT64_C(1000000000000000);
   // if global_calccoords!=0:
@@ -929,6 +947,368 @@ int main() {
   return 0; }
 #endif
 
+static int32_t lonadapt(int32_t londiff,int32_t lat) {
+  // takes a West-East distance given in longitude difference,
+  // and calculates the adjusted distance in degrees,
+  // i.e., it takes the latitude into account;
+  // all units: 100 nano degrees;
+  // londiff: West-East distance between two points;
+  // lat: latitude at which the distance is to be calculated;
+  // return: West-East distance in Equator degrees;
+  //         this adjusted longitude difference is then comparable
+  //         to latitude differences;
+  static const uint32_t cosrtab[901]= {
+    UINT32_C(4294967295),UINT32_C(4294960754),UINT32_C(4294941129),
+    UINT32_C(4294908421),UINT32_C(4294862630),UINT32_C(4294803756),
+    UINT32_C(4294731800),UINT32_C(4294646761),UINT32_C(4294548639),
+    UINT32_C(4294437436),UINT32_C(4294313151),UINT32_C(4294175785),
+    UINT32_C(4294025338),UINT32_C(4293861811),UINT32_C(4293685204),
+    UINT32_C(4293495517),UINT32_C(4293292752),UINT32_C(4293076909),
+    UINT32_C(4292847988),UINT32_C(4292605991),UINT32_C(4292350917),
+    UINT32_C(4292082769),UINT32_C(4291801546),UINT32_C(4291507249),
+    UINT32_C(4291199879),UINT32_C(4290879438),UINT32_C(4290545926),
+    UINT32_C(4290199345),UINT32_C(4289839694),UINT32_C(4289466976),
+    UINT32_C(4289081192),UINT32_C(4288682342),UINT32_C(4288270429),
+    UINT32_C(4287845452),UINT32_C(4287407414),UINT32_C(4286956316),
+    UINT32_C(4286492159),UINT32_C(4286014944),UINT32_C(4285524674),
+    UINT32_C(4285021349),UINT32_C(4284504971),UINT32_C(4283975542),
+    UINT32_C(4283433063),UINT32_C(4282877536),UINT32_C(4282308963),
+    UINT32_C(4281727345),UINT32_C(4281132684),UINT32_C(4280524982),
+    UINT32_C(4279904241),UINT32_C(4279270462),UINT32_C(4278623648),
+    UINT32_C(4277963801),UINT32_C(4277290922),UINT32_C(4276605014),
+    UINT32_C(4275906079),UINT32_C(4275194118),UINT32_C(4274469135),
+    UINT32_C(4273731130),UINT32_C(4272980107),UINT32_C(4272216068),
+    UINT32_C(4271439015),UINT32_C(4270648951),UINT32_C(4269845877),
+    UINT32_C(4269029797),UINT32_C(4268200712),UINT32_C(4267358626),
+    UINT32_C(4266503540),UINT32_C(4265635459),UINT32_C(4264754383),
+    UINT32_C(4263860316),UINT32_C(4262953261),UINT32_C(4262033219),
+    UINT32_C(4261100196),UINT32_C(4260154192),UINT32_C(4259195210),
+    UINT32_C(4258223255),UINT32_C(4257238328),UINT32_C(4256240433),
+    UINT32_C(4255229573),UINT32_C(4254205750),UINT32_C(4253168969),
+    UINT32_C(4252119232),UINT32_C(4251056542),UINT32_C(4249980902),
+    UINT32_C(4248892316),UINT32_C(4247790788),UINT32_C(4246676320),
+    UINT32_C(4245548916),UINT32_C(4244408579),UINT32_C(4243255313),
+    UINT32_C(4242089121),UINT32_C(4240910007),UINT32_C(4239717975),
+    UINT32_C(4238513027),UINT32_C(4237295169),UINT32_C(4236064403),
+    UINT32_C(4234820733),UINT32_C(4233564163),UINT32_C(4232294697),
+    UINT32_C(4231012338),UINT32_C(4229717092),UINT32_C(4228408960),
+    UINT32_C(4227087949),UINT32_C(4225754060),UINT32_C(4224407300),
+    UINT32_C(4223047671),UINT32_C(4221675178),UINT32_C(4220289825),
+    UINT32_C(4218891617),UINT32_C(4217480557),UINT32_C(4216056649),
+    UINT32_C(4214619899),UINT32_C(4213170311),UINT32_C(4211707888),
+    UINT32_C(4210232636),UINT32_C(4208744558),UINT32_C(4207243661),
+    UINT32_C(4205729947),UINT32_C(4204203421),UINT32_C(4202664089),
+    UINT32_C(4201111955),UINT32_C(4199547024),UINT32_C(4197969300),
+    UINT32_C(4196378788),UINT32_C(4194775494),UINT32_C(4193159421),
+    UINT32_C(4191530576),UINT32_C(4189888962),UINT32_C(4188234585),
+    UINT32_C(4186567450),UINT32_C(4184887562),UINT32_C(4183194926),
+    UINT32_C(4181489547),UINT32_C(4179771431),UINT32_C(4178040583),
+    UINT32_C(4176297007),UINT32_C(4174540710),UINT32_C(4172771696),
+    UINT32_C(4170989972),UINT32_C(4169195542),UINT32_C(4167388411),
+    UINT32_C(4165568586),UINT32_C(4163736073),UINT32_C(4161890875),
+    UINT32_C(4160033000),UINT32_C(4158162453),UINT32_C(4156279239),
+    UINT32_C(4154383364),UINT32_C(4152474835),UINT32_C(4150553656),
+    UINT32_C(4148619834),UINT32_C(4146673374),UINT32_C(4144714283),
+    UINT32_C(4142742567),UINT32_C(4140758231),UINT32_C(4138761281),
+    UINT32_C(4136751725),UINT32_C(4134729567),UINT32_C(4132694813),
+    UINT32_C(4130647471),UINT32_C(4128587546),UINT32_C(4126515045),
+    UINT32_C(4124429974),UINT32_C(4122332339),UINT32_C(4120222147),
+    UINT32_C(4118099404),UINT32_C(4115964116),UINT32_C(4113816290),
+    UINT32_C(4111655933),UINT32_C(4109483051),UINT32_C(4107297651),
+    UINT32_C(4105099740),UINT32_C(4102889323),UINT32_C(4100666409),
+    UINT32_C(4098431003),UINT32_C(4096183113),UINT32_C(4093922745),
+    UINT32_C(4091649906),UINT32_C(4089364603),UINT32_C(4087066843),
+    UINT32_C(4084756634),UINT32_C(4082433981),UINT32_C(4080098893),
+    UINT32_C(4077751376),UINT32_C(4075391437),UINT32_C(4073019085),
+    UINT32_C(4070634325),UINT32_C(4068237165),UINT32_C(4065827612),
+    UINT32_C(4063405675),UINT32_C(4060971359),UINT32_C(4058524674),
+    UINT32_C(4056065625),UINT32_C(4053594220),UINT32_C(4051110468),
+    UINT32_C(4048614376),UINT32_C(4046105950),UINT32_C(4043585200),
+    UINT32_C(4041052132),UINT32_C(4038506754),UINT32_C(4035949074),
+    UINT32_C(4033379100),UINT32_C(4030796840),UINT32_C(4028202301),
+    UINT32_C(4025595491),UINT32_C(4022976419),UINT32_C(4020345093),
+    UINT32_C(4017701519),UINT32_C(4015045707),UINT32_C(4012377664),
+    UINT32_C(4009697399),UINT32_C(4007004920),UINT32_C(4004300235),
+    UINT32_C(4001583352),UINT32_C(3998854279),UINT32_C(3996113026),
+    UINT32_C(3993359599),UINT32_C(3990594008),UINT32_C(3987816261),
+    UINT32_C(3985026366),UINT32_C(3982224332),UINT32_C(3979410168),
+    UINT32_C(3976583882),UINT32_C(3973745482),UINT32_C(3970894978),
+    UINT32_C(3968032377),UINT32_C(3965157689),UINT32_C(3962270923),
+    UINT32_C(3959372087),UINT32_C(3956461190),UINT32_C(3953538241),
+    UINT32_C(3950603249),UINT32_C(3947656222),UINT32_C(3944697170),
+    UINT32_C(3941726103),UINT32_C(3938743027),UINT32_C(3935747954),
+    UINT32_C(3932740892),UINT32_C(3929721850),UINT32_C(3926690837),
+    UINT32_C(3923647863),UINT32_C(3920592937),UINT32_C(3917526068),
+    UINT32_C(3914447266),UINT32_C(3911356540),UINT32_C(3908253899),
+    UINT32_C(3905139352),UINT32_C(3902012910),UINT32_C(3898874582),
+    UINT32_C(3895724377),UINT32_C(3892562305),UINT32_C(3889388376),
+    UINT32_C(3886202598),UINT32_C(3883004983),UINT32_C(3879795540),
+    UINT32_C(3876574278),UINT32_C(3873341207),UINT32_C(3870096337),
+    UINT32_C(3866839679),UINT32_C(3863571241),UINT32_C(3860291034),
+    UINT32_C(3856999068),UINT32_C(3853695353),UINT32_C(3850379899),
+    UINT32_C(3847052716),UINT32_C(3843713815),UINT32_C(3840363204),
+    UINT32_C(3837000896),UINT32_C(3833626899),UINT32_C(3830241224),
+    UINT32_C(3826843881),UINT32_C(3823434882),UINT32_C(3820014235),
+    UINT32_C(3816581952),UINT32_C(3813138044),UINT32_C(3809682519),
+    UINT32_C(3806215390),UINT32_C(3802736666),UINT32_C(3799246359),
+    UINT32_C(3795744478),UINT32_C(3792231035),UINT32_C(3788706040),
+    UINT32_C(3785169504),UINT32_C(3781621438),UINT32_C(3778061852),
+    UINT32_C(3774490758),UINT32_C(3770908165),UINT32_C(3767314086),
+    UINT32_C(3763708532),UINT32_C(3760091512),UINT32_C(3756463038),
+    UINT32_C(3752823122),UINT32_C(3749171773),UINT32_C(3745509004),
+    UINT32_C(3741834826),UINT32_C(3738149249),UINT32_C(3734452286),
+    UINT32_C(3730743946),UINT32_C(3727024242),UINT32_C(3723293185),
+    UINT32_C(3719550786),UINT32_C(3715797057),UINT32_C(3712032009),
+    UINT32_C(3708255653),UINT32_C(3704468001),UINT32_C(3700669065),
+    UINT32_C(3696858856),UINT32_C(3693037385),UINT32_C(3689204665),
+    UINT32_C(3685360707),UINT32_C(3681505523),UINT32_C(3677639124),
+    UINT32_C(3673761523),UINT32_C(3669872731),UINT32_C(3665972759),
+    UINT32_C(3662061621),UINT32_C(3658139327),UINT32_C(3654205890),
+    UINT32_C(3650261321),UINT32_C(3646305633),UINT32_C(3642338838),
+    UINT32_C(3638360948),UINT32_C(3634371974),UINT32_C(3630371930),
+    UINT32_C(3626360827),UINT32_C(3622338677),UINT32_C(3618305493),
+    UINT32_C(3614261287),UINT32_C(3610206072),UINT32_C(3606139859),
+    UINT32_C(3602062661),UINT32_C(3597974491),UINT32_C(3593875360),
+    UINT32_C(3589765282),UINT32_C(3585644269),UINT32_C(3581512334),
+    UINT32_C(3577369488),UINT32_C(3573215746),UINT32_C(3569051119),
+    UINT32_C(3564875619),UINT32_C(3560689261),UINT32_C(3556492056),
+    UINT32_C(3552284017),UINT32_C(3548065158),UINT32_C(3543835490),
+    UINT32_C(3539595027),UINT32_C(3535343783),UINT32_C(3531081768),
+    UINT32_C(3526808998),UINT32_C(3522525484),UINT32_C(3518231240),
+    UINT32_C(3513926279),UINT32_C(3509610614),UINT32_C(3505284258),
+    UINT32_C(3500947224),UINT32_C(3496599526),UINT32_C(3492241177),
+    UINT32_C(3487872189),UINT32_C(3483492577),UINT32_C(3479102354),
+    UINT32_C(3474701532),UINT32_C(3470290126),UINT32_C(3465868149),
+    UINT32_C(3461435615),UINT32_C(3456992536),UINT32_C(3452538927),
+    UINT32_C(3448074800),UINT32_C(3443600170),UINT32_C(3439115051),
+    UINT32_C(3434619455),UINT32_C(3430113397),UINT32_C(3425596890),
+    UINT32_C(3421069948),UINT32_C(3416532585),UINT32_C(3411984814),
+    UINT32_C(3407426650),UINT32_C(3402858107),UINT32_C(3398279197),
+    UINT32_C(3393689936),UINT32_C(3389090338),UINT32_C(3384480415),
+    UINT32_C(3379860183),UINT32_C(3375229655),UINT32_C(3370588846),
+    UINT32_C(3365937769),UINT32_C(3361276439),UINT32_C(3356604870),
+    UINT32_C(3351923076),UINT32_C(3347231071),UINT32_C(3342528871),
+    UINT32_C(3337816488),UINT32_C(3333093938),UINT32_C(3328361235),
+    UINT32_C(3323618393),UINT32_C(3318865426),UINT32_C(3314102350),
+    UINT32_C(3309329178),UINT32_C(3304545926),UINT32_C(3299752607),
+    UINT32_C(3294949237),UINT32_C(3290135830),UINT32_C(3285312400),
+    UINT32_C(3280478963),UINT32_C(3275635533),UINT32_C(3270782125),
+    UINT32_C(3265918753),UINT32_C(3261045433),UINT32_C(3256162179),
+    UINT32_C(3251269007),UINT32_C(3246365930),UINT32_C(3241452965),
+    UINT32_C(3236530125),UINT32_C(3231597426),UINT32_C(3226654884),
+    UINT32_C(3221702512),UINT32_C(3216740326),UINT32_C(3211768342),
+    UINT32_C(3206786574),UINT32_C(3201795038),UINT32_C(3196793749),
+    UINT32_C(3191782721),UINT32_C(3186761971),UINT32_C(3181731513),
+    UINT32_C(3176691364),UINT32_C(3171641537),UINT32_C(3166582049),
+    UINT32_C(3161512915),UINT32_C(3156434151),UINT32_C(3151345772),
+    UINT32_C(3146247793),UINT32_C(3141140230),UINT32_C(3136023098),
+    UINT32_C(3130896414),UINT32_C(3125760193),UINT32_C(3120614449),
+    UINT32_C(3115459200),UINT32_C(3110294461),UINT32_C(3105120247),
+    UINT32_C(3099936575),UINT32_C(3094743459),UINT32_C(3089540917),
+    UINT32_C(3084328963),UINT32_C(3079107614),UINT32_C(3073876885),
+    UINT32_C(3068636792),UINT32_C(3063387352),UINT32_C(3058128581),
+    UINT32_C(3052860494),UINT32_C(3047583107),UINT32_C(3042296437),
+    UINT32_C(3037000499),UINT32_C(3031695311),UINT32_C(3026380887),
+    UINT32_C(3021057244),UINT32_C(3015724399),UINT32_C(3010382367),
+    UINT32_C(3005031165),UINT32_C(2999670809),UINT32_C(2994301316),
+    UINT32_C(2988922702),UINT32_C(2983534983),UINT32_C(2978138175),
+    UINT32_C(2972732295),UINT32_C(2967317360),UINT32_C(2961893387),
+    UINT32_C(2956460390),UINT32_C(2951018388),UINT32_C(2945567396),
+    UINT32_C(2940107432),UINT32_C(2934638512),UINT32_C(2929160652),
+    UINT32_C(2923673869),UINT32_C(2918178181),UINT32_C(2912673603),
+    UINT32_C(2907160153),UINT32_C(2901637847),UINT32_C(2896106702),
+    UINT32_C(2890566735),UINT32_C(2885017963),UINT32_C(2879460402),
+    UINT32_C(2873894071),UINT32_C(2868318984),UINT32_C(2862735161),
+    UINT32_C(2857142617),UINT32_C(2851541370),UINT32_C(2845931436),
+    UINT32_C(2840312834),UINT32_C(2834685579),UINT32_C(2829049689),
+    UINT32_C(2823405181),UINT32_C(2817752073),UINT32_C(2812090382),
+    UINT32_C(2806420124),UINT32_C(2800741318),UINT32_C(2795053980),
+    UINT32_C(2789358128),UINT32_C(2783653778),UINT32_C(2777940950),
+    UINT32_C(2772219659),UINT32_C(2766489924),UINT32_C(2760751761),
+    UINT32_C(2755005189),UINT32_C(2749250225),UINT32_C(2743486885),
+    UINT32_C(2737715189),UINT32_C(2731935153),UINT32_C(2726146795),
+    UINT32_C(2720350133),UINT32_C(2714545185),UINT32_C(2708731967),
+    UINT32_C(2702910498),UINT32_C(2697080795),UINT32_C(2691242877),
+    UINT32_C(2685396761),UINT32_C(2679542464),UINT32_C(2673680005),
+    UINT32_C(2667809402),UINT32_C(2661930672),UINT32_C(2656043833),
+    UINT32_C(2650148904),UINT32_C(2644245901),UINT32_C(2638334844),
+    UINT32_C(2632415750),UINT32_C(2626488638),UINT32_C(2620553524),
+    UINT32_C(2614610428),UINT32_C(2608659367),UINT32_C(2602700360),
+    UINT32_C(2596733425),UINT32_C(2590758580),UINT32_C(2584775842),
+    UINT32_C(2578785231),UINT32_C(2572786765),UINT32_C(2566780461),
+    UINT32_C(2560766339),UINT32_C(2554744416),UINT32_C(2548714710),
+    UINT32_C(2542677241),UINT32_C(2536632027),UINT32_C(2530579085),
+    UINT32_C(2524518435),UINT32_C(2518450095),UINT32_C(2512374083),
+    UINT32_C(2506290418),UINT32_C(2500199119),UINT32_C(2494100203),
+    UINT32_C(2487993690),UINT32_C(2481879598),UINT32_C(2475757946),
+    UINT32_C(2469628752),UINT32_C(2463492035),UINT32_C(2457347814),
+    UINT32_C(2451196108),UINT32_C(2445036935),UINT32_C(2438870314),
+    UINT32_C(2432696263),UINT32_C(2426514803),UINT32_C(2420325950),
+    UINT32_C(2414129725),UINT32_C(2407926146),UINT32_C(2401715232),
+    UINT32_C(2395497002),UINT32_C(2389271475),UINT32_C(2383038670),
+    UINT32_C(2376798605),UINT32_C(2370551301),UINT32_C(2364296775),
+    UINT32_C(2358035048),UINT32_C(2351766137),UINT32_C(2345490062),
+    UINT32_C(2339206843),UINT32_C(2332916498),UINT32_C(2326619047),
+    UINT32_C(2320314508),UINT32_C(2314002901),UINT32_C(2307684246),
+    UINT32_C(2301358560),UINT32_C(2295025865),UINT32_C(2288686178),
+    UINT32_C(2282339520),UINT32_C(2275985909),UINT32_C(2269625365),
+    UINT32_C(2263257908),UINT32_C(2256883556),UINT32_C(2250502329),
+    UINT32_C(2244114247),UINT32_C(2237719329),UINT32_C(2231317595),
+    UINT32_C(2224909063),UINT32_C(2218493754),UINT32_C(2212071687),
+    UINT32_C(2205642882),UINT32_C(2199207358),UINT32_C(2192765135),
+    UINT32_C(2186316232),UINT32_C(2179860670),UINT32_C(2173398467),
+    UINT32_C(2166929644),UINT32_C(2160454220),UINT32_C(2153972214),
+    UINT32_C(2147483647),UINT32_C(2140988539),UINT32_C(2134486909),
+    UINT32_C(2127978777),UINT32_C(2121464163),UINT32_C(2114943086),
+    UINT32_C(2108415567),UINT32_C(2101881625),UINT32_C(2095341281),
+    UINT32_C(2088794553),UINT32_C(2082241463),UINT32_C(2075682030),
+    UINT32_C(2069116274),UINT32_C(2062544216),UINT32_C(2055965874),
+    UINT32_C(2049381270),UINT32_C(2042790423),UINT32_C(2036193353),
+    UINT32_C(2029590080),UINT32_C(2022980625),UINT32_C(2016365008),
+    UINT32_C(2009743249),UINT32_C(2003115367),UINT32_C(1996481384),
+    UINT32_C(1989841319),UINT32_C(1983195192),UINT32_C(1976543025),
+    UINT32_C(1969884836),UINT32_C(1963220647),UINT32_C(1956550478),
+    UINT32_C(1949874349),UINT32_C(1943192280),UINT32_C(1936504291),
+    UINT32_C(1929810404),UINT32_C(1923110638),UINT32_C(1916405014),
+    UINT32_C(1909693553),UINT32_C(1902976274),UINT32_C(1896253198),
+    UINT32_C(1889524346),UINT32_C(1882789738),UINT32_C(1876049395),
+    UINT32_C(1869303338),UINT32_C(1862551585),UINT32_C(1855794160),
+    UINT32_C(1849031081),UINT32_C(1842262370),UINT32_C(1835488046),
+    UINT32_C(1828708132),UINT32_C(1821922647),UINT32_C(1815131612),
+    UINT32_C(1808335048),UINT32_C(1801532976),UINT32_C(1794725416),
+    UINT32_C(1787912388),UINT32_C(1781093915),UINT32_C(1774270015),
+    UINT32_C(1767440712),UINT32_C(1760606024),UINT32_C(1753765973),
+    UINT32_C(1746920580),UINT32_C(1740069865),UINT32_C(1733213850),
+    UINT32_C(1726352555),UINT32_C(1719486001),UINT32_C(1712614210),
+    UINT32_C(1705737201),UINT32_C(1698854997),UINT32_C(1691967618),
+    UINT32_C(1685075084),UINT32_C(1678177418),UINT32_C(1671274639),
+    UINT32_C(1664366770),UINT32_C(1657453831),UINT32_C(1650535842),
+    UINT32_C(1643612826),UINT32_C(1636684803),UINT32_C(1629751795),
+    UINT32_C(1622813822),UINT32_C(1615870906),UINT32_C(1608923067),
+    UINT32_C(1601970327),UINT32_C(1595012708),UINT32_C(1588050230),
+    UINT32_C(1581082914),UINT32_C(1574110782),UINT32_C(1567133855),
+    UINT32_C(1560152155),UINT32_C(1553165701),UINT32_C(1546174517),
+    UINT32_C(1539178623),UINT32_C(1532178040),UINT32_C(1525172790),
+    UINT32_C(1518162893),UINT32_C(1511148373),UINT32_C(1504129249),
+    UINT32_C(1497105543),UINT32_C(1490077277),UINT32_C(1483044472),
+    UINT32_C(1476007149),UINT32_C(1468965330),UINT32_C(1461919036),
+    UINT32_C(1454868289),UINT32_C(1447813110),UINT32_C(1440753521),
+    UINT32_C(1433689543),UINT32_C(1426621198),UINT32_C(1419548507),
+    UINT32_C(1412471492),UINT32_C(1405390174),UINT32_C(1398304576),
+    UINT32_C(1391214717),UINT32_C(1384120621),UINT32_C(1377022309),
+    UINT32_C(1369919802),UINT32_C(1362813122),UINT32_C(1355702290),
+    UINT32_C(1348587329),UINT32_C(1341468260),UINT32_C(1334345104),
+    UINT32_C(1327217884),UINT32_C(1320086621),UINT32_C(1312951337),
+    UINT32_C(1305812053),UINT32_C(1298668792),UINT32_C(1291521574),
+    UINT32_C(1284370422),UINT32_C(1277215358),UINT32_C(1270056404),
+    UINT32_C(1262893580),UINT32_C(1255726910),UINT32_C(1248556414),
+    UINT32_C(1241382115),UINT32_C(1234204034),UINT32_C(1227022194),
+    UINT32_C(1219836617),UINT32_C(1212647323),UINT32_C(1205454335),
+    UINT32_C(1198257676),UINT32_C(1191057366),UINT32_C(1183853428),
+    UINT32_C(1176645884),UINT32_C(1169434756),UINT32_C(1162220065),
+    UINT32_C(1155001834),UINT32_C(1147780085),UINT32_C(1140554839),
+    UINT32_C(1133326119),UINT32_C(1126093947),UINT32_C(1118858345),
+    UINT32_C(1111619334),UINT32_C(1104376937),UINT32_C(1097131176),
+    UINT32_C(1089882073),UINT32_C(1082629649),UINT32_C(1075373928),
+    UINT32_C(1068114932),UINT32_C(1060852681),UINT32_C(1053587199),
+    UINT32_C(1046318508),UINT32_C(1039046629),UINT32_C(1031771586),
+    UINT32_C(1024493399),UINT32_C(1017212091),UINT32_C(1009927685),
+    UINT32_C(1002640203),UINT32_C(995349666),UINT32_C(988056097),
+    UINT32_C(980759519),UINT32_C(973459953),UINT32_C(966157421),
+    UINT32_C(958851947),UINT32_C(951543551),UINT32_C(944232257),
+    UINT32_C(936918087),UINT32_C(929601063),UINT32_C(922281207),
+    UINT32_C(914958542),UINT32_C(907633089),UINT32_C(900304872),
+    UINT32_C(892973912),UINT32_C(885640232),UINT32_C(878303854),
+    UINT32_C(870964801),UINT32_C(863623095),UINT32_C(856278758),
+    UINT32_C(848931812),UINT32_C(841582281),UINT32_C(834230186),
+    UINT32_C(826875549),UINT32_C(819518394),UINT32_C(812158743),
+    UINT32_C(804796618),UINT32_C(797432041),UINT32_C(790065034),
+    UINT32_C(782695622),UINT32_C(775323825),UINT32_C(767949666),
+    UINT32_C(760573168),UINT32_C(753194353),UINT32_C(745813244),
+    UINT32_C(738429862),UINT32_C(731044232),UINT32_C(723656374),
+    UINT32_C(716266313),UINT32_C(708874069),UINT32_C(701479666),
+    UINT32_C(694083126),UINT32_C(686684472),UINT32_C(679283726),
+    UINT32_C(671880911),UINT32_C(664476049),UINT32_C(657069163),
+    UINT32_C(649660276),UINT32_C(642249409),UINT32_C(634836586),
+    UINT32_C(627421830),UINT32_C(620005162),UINT32_C(612586605),
+    UINT32_C(605166183),UINT32_C(597743917),UINT32_C(590319830),
+    UINT32_C(582893945),UINT32_C(575466284),UINT32_C(568036870),
+    UINT32_C(560605726),UINT32_C(553172875),UINT32_C(545738338),
+    UINT32_C(538302139),UINT32_C(530864300),UINT32_C(523424844),
+    UINT32_C(515983793),UINT32_C(508541171),UINT32_C(501097000),
+    UINT32_C(493651302),UINT32_C(486204100),UINT32_C(478755418),
+    UINT32_C(471305277),UINT32_C(463853700),UINT32_C(456400711),
+    UINT32_C(448946331),UINT32_C(441490583),UINT32_C(434033491),
+    UINT32_C(426575076),UINT32_C(419115363),UINT32_C(411654372),
+    UINT32_C(404192127),UINT32_C(396728652),UINT32_C(389263967),
+    UINT32_C(381798097),UINT32_C(374331064),UINT32_C(366862891),
+    UINT32_C(359393600),UINT32_C(351923214),UINT32_C(344451757),
+    UINT32_C(336979250),UINT32_C(329505716),UINT32_C(322031179),
+    UINT32_C(314555661),UINT32_C(307079185),UINT32_C(299601773),
+    UINT32_C(292123449),UINT32_C(284644234),UINT32_C(277164153),
+    UINT32_C(269683227),UINT32_C(262201480),UINT32_C(254718934),
+    UINT32_C(247235613),UINT32_C(239751538),UINT32_C(232266733),
+    UINT32_C(224781220),UINT32_C(217295023),UINT32_C(209808163),
+    UINT32_C(202320665),UINT32_C(194832550),UINT32_C(187343842),
+    UINT32_C(179854563),UINT32_C(172364736),UINT32_C(164874384),
+    UINT32_C(157383530),UINT32_C(149892196),UINT32_C(142400406),
+    UINT32_C(134908182),UINT32_C(127415548),UINT32_C(119922525),
+    UINT32_C(112429136),UINT32_C(104935406),UINT32_C(97441355),
+    UINT32_C(89947008),UINT32_C(82452387),UINT32_C(74957514),
+    UINT32_C(67462414),UINT32_C(59967107),UINT32_C(52471619),
+    UINT32_C(44975970),UINT32_C(37480184),UINT32_C(29984284),
+    UINT32_C(22488293),UINT32_C(14992233),UINT32_C(7496128),
+    0 };  // cosr values for 10th degrees from 0 to 90
+  lat/= 1000000;
+    // transform unit 100 nano degree into unit 10th degree
+  if(lat<0) lat= -lat;  // make it positive
+  if(lat>900) lat= 900; // set maximum of 90 degree
+  return ((uint64_t)cosrtab[lat]*(int64_t)londiff)/INT64_C(0x100000000);
+  }  // lonadapt()
+// the table in the previous procedure has been generated by this
+// program:
+#if 0  // file cosr.c, run it with: gcc cosr.c -lm -o cosr && ./cosr
+#include <stdio.h>
+#include <math.h>
+#include <inttypes.h>
+int main() {
+  int i;
+  printf("  static const uint32_t cosrtab[901]= "
+    "{\n    UINT32_C(4294967295),");
+  for(i= 1;i<900;i++) {
+    if(i%3==0) printf("\n    ");
+    printf("UINT32_C(%"PRIu32"),",(uint32_t)(
+      cos(i/1800.0*3.14159265359) * INT64_C(0x100000000) ));
+    }
+  printf("\n    0");
+  printf(" };  // cosr values for 10th degrees from 0 to 90\n");
+  return 0; }
+#endif
+
+static int32_t geodistance(int32_t x1,int32_t y1,
+    int32_t x2,int32_t y2) {
+  // approximates the geodistance between two points;
+  // x1,y1: geocoordinates of first point;
+  // x2,y2: geocoordinates of second point;
+  // return: distance as angle;
+  // all units in 100 nanodegrees;
+  // how this is done:
+  // distances in West-East direction and in South-North direction
+  // are compared; the longer shorter distance is divided by 3 and
+  // added to the value of the longer distance;
+  // => all points on the edges of an octagon around point 1
+  //    are interpreted as equidistant;
+  // this approximation is close enough for this application;
+  int32_t xdist,ydist;
+
+  xdist= x2-x1; if(xdist<0) xdist= -xdist;
+  ydist= y2-y1; if(ydist<0) ydist= -ydist;
+  xdist= lonadapt(xdist,y1);
+  if(xdist<ydist)
+    return xdist/3+ydist;
+  return ydist/3+xdist;
+  }  // geodistance
+
 
 
 //------------------------------------------------------------
@@ -1630,9 +2010,8 @@ return false;
   /* second, consider border polygon (if any) */ {
     border__edge_t* bep;  // pointer in border__edge[]
     border__chain_t* bcp;  // pointer in border__chain[]
-    int cross;  // number of the crossings a line from the point
-      // to the north pole would have ageinst the border lines
-      // in border__coord[][];
+    int cross;  // number of polygon edges a ray would cross
+      // which started at the given point;
 
     if(border__edge==NULL)
 return true;
@@ -1917,12 +2296,12 @@ static inline bool read_input() {
   // having available at least read_PREFETCH bytes at address
   // read_bufp - with one exception: if there are not enough bytes
   // left to read from standard input, every byte after the end of
-  // the reminding part of the file in the buffer will be set to
+  // the remaining part of the file in the buffer will be set to
   // 0x00 - up to read_bufp+read_PREFETCH;
   int l,r;
 
   if(read_bufp+read_PREFETCH>=read_bufe) {  // read buffer is too low
-    if(!read_infop->eof) {  // still bytes in the file
+    if(!read_infop->eof) {  // still bytes to read
       if(read_bufe>read_bufp) {  // bytes remaining in buffer
         memmove(read__buf,read_bufp,read_bufe-read_bufp);
           // move remaining bytes to start of buffer
@@ -1947,10 +2326,10 @@ static inline bool read_input() {
           read_infop->eof= true;
             // memorize that there we are at end of file
           l= (read__buf+read__bufM)-read_bufe;
-            // reminding space in buffer
+            // remaining space in buffer
           if(l>read_PREFETCH) l= read_PREFETCH;
           memset(read_bufe,0,l);  // 2011-12-24
-            // set reminding space up to prefetch bytes in buffer to 0
+            // set remaining space up to prefetch bytes in buffer to 0
       break;
           }
         read_infop->counter+= r;
@@ -2474,6 +2853,25 @@ static inline void write_uint32(uint32_t v) {
   write_str(s);
   }  // end write_uint32()
 
+static inline void write_createsint32(int32_t v,char* sp) {
+  // create a signed 32 bit integer number;
+  // return:
+  // sp[20]: value v as decimal integer string;
+  static char *s1,*s2,c;
+
+  s1= sp;
+  if(v<0)
+    { *s1++= '-'; v= -v; }
+  else if(v==0)
+    *s1++= '0';
+  s2= s1;
+  while(v>0)
+    { *s2++= (v%10)+'0'; v/= 10; }
+  *s2--= 0;
+  while(s2>s1)
+    { c= *s1; *s1= *s2; *s2= c; s1++; s2--; }
+  }  // end write_sint32()
+
 #if 0  // currently unused
 static inline void write_sint32(int32_t v) {
   // write a signed 32 bit integer number to standard output;
@@ -2551,8 +2949,8 @@ static inline char* write_createsfix7o(int32_t v,char* s) {
   // convert a signed 7 decimals fixpoint value into a string;
   // keep trailing zeros;
   // v: fixpoint value
-  // return: pointer do string terminator;
-  // s[12]: destination string;
+  // return: pointer to string terminator;
+  // s[13]: destination string;
   char* s1,*s2,*sterm,c;
   int i;
 
@@ -5473,7 +5871,7 @@ static inline void pw_relation_close() {
 // this module provides a geocoordinate table for to store
 // the coordinates of all OSM objects;
 // the procedures posi_set() (resp. posi_setbbox()) and
-// posi_get() allow access to this tables;
+// posi_get() allow access to this table;
 // as usual, all identifiers of a module have the same prefix,
 // in this case 'posi'; an underline will follow for a global
 // accessible identifier, two underlines if the identifier
@@ -5556,7 +5954,7 @@ return 0;
     posi__mem_size = 16;
     posi__mem_mask = ~0x0f;
     posi__mem_increment = 2;
-  }
+    }
   siz= posi__mem_size*global_maxobjects;
   posi__mem= (posi__mem_t*)malloc(siz);
   if(posi__mem==NULL)  // not enough memory
@@ -7843,11 +8241,11 @@ write_xmlstr(val);
 
 static inline void wo_addbboxtags(bool fornode,
     int32_t x_min, int32_t y_min,int32_t x_max, int32_t y_max) {
-  // adds tags for bbox and box area if requested by
-  // global_addbbox, global_addbboxarea resp. global_addbboxweight;
+  // adds tags for bbox, bbox width and box area if requested by
+  // global_addbbox, global_addbboxarea, global_addbboxweight,
+  // global_addbboxwidth resp. global_addbboxwidthweight;
   // fornode: add the tag(s) to a node, not to way/rel;
   char s[84],*sp;
-  int64_t area;
 
   if(global_addbbox) {  // add bbox tags
     sp= s;
@@ -7865,6 +8263,8 @@ static inline void wo_addbboxtags(bool fornode,
     }  // add bbox tags
   if(global_addbboxarea|global_addbboxweight) {
       // add bbox area tags OR add bbox weight tags
+    int64_t area;
+
     area= (int64_t)(x_max-x_min)*(int64_t)(y_max-y_min)/
       cosrk((y_min+y_max)/2);
     if(global_addbboxarea) {  // add bbox area tags
@@ -7882,6 +8282,29 @@ static inline void wo_addbboxtags(bool fornode,
         wo_wayrel_keyval("bBoxWeight",s);
       }  // add bbox weight tags
     }  // add bbox area tags OR add bbox weight tags
+  if(global_addbboxwidth|global_addbboxwidthweight) {
+      // add bbox width tags OR add bbox width weight tags
+    int32_t xwidth,ywidth,width;
+
+    xwidth= lonadapt(x_max-x_min,(y_min+y_max)/2);
+    ywidth= y_max-y_min;
+    width= xwidth>ywidth? xwidth: ywidth;  // width in 100 nano degrees
+    width/=90;
+    if(global_addbboxwidth) {  // add bbox width tags
+      write_createsint32(width,s);
+      if(fornode)
+        wo_node_keyval("bBoxWidth",s);
+      else
+        wo_wayrel_keyval("bBoxWidth",s);
+      }  // add bbox width tags
+    if(global_addbboxwidthweight) {  // add bbox width weight tags
+      write_createsint32(msbit(width),s);
+      if(fornode)
+        wo_node_keyval("bBoxWidthWeight",s);
+      else
+        wo_wayrel_keyval("bBoxWidthWeight",s);
+      }  // add bbox width weight tags
+    }  // add bbox width tags OR add bbox width weight tags
   } // end wo_addbboxtags()
 
 //------------------------------------------------------------
@@ -8047,7 +8470,7 @@ static inline uint32_t oo__strtouint32(const char* s) {
 
 #if 0  // presently unused
 static inline int32_t oo__strtosint32(const char* s) {
-  // read a number and convert it to a signed 64-bit integer;
+  // read a number and convert it to a signed 32-bit integer;
   // return: number;
   int sign;
   int32_t i;
@@ -9209,7 +9632,7 @@ static int oo_main() {
   char** refrolee,**refrolep;  // pointer in array
   #define oo__keyvalM 8000  // changed from 4000 to 8000
     // because there are old ways with this many key/val pairs
-    // in full istory planet due to malicious Tiger import
+    // in full history planet due to malicious Tiger import
   char* key[oo__keyvalM],*val[oo__keyvalM];
   char** keyee;  // end address of first array
   char** keye,**keyp;  // pointer in array
@@ -9870,9 +10293,9 @@ return 23;
           if(oo__xmlkey[0]=='i' && oo__xmlkey[1]=='d') // id
             id= oo__strtosint64(oo__xmlval);
           else if(oo__xmlkey[0]=='l') {  // letter l
-            if(oo__xmlkey[1]=='o') // lon
+            if(oo__xmlkey[1]=='o')  // lon
               lon= oo__strtodeg(oo__xmlval);
-            else if(oo__xmlkey[1]=='a') // lon
+            else if(oo__xmlkey[1]=='a')  // lan
               lat= oo__strtodeg(oo__xmlval);
             }  // end   letter l
           else if(oo__xmlkey[0]=='v' && oo__xmlkey[1]=='i') {  // visible
@@ -11660,7 +12083,7 @@ return 0;
   continue;  // take next parameter
       }
     if(strcmp(a,"--out-timestamp")==0) {
-        // user wants output in osc format
+        // user wants output with timestamp
       global_outtimestamp= true;
   continue;  // take next parameter
       }
@@ -11723,6 +12146,20 @@ return 0;
       global_add= true;
   continue;  // take next parameter
       }
+    if(strcmp(a,"--add-bboxwidth-tags")==0) {
+        // compute a bounding box and add its width as tag
+      global_calccoords= -1;
+      global_addbboxwidth= true;
+      global_add= true;
+  continue;  // take next parameter
+      }
+    if(strcmp(a,"--add-bboxwidthweight-tags")==0) {
+        // compute a bounding box and add its width weight as tag
+      global_calccoords= -1;
+      global_addbboxwidthweight= true;
+      global_add= true;
+  continue;  // take next parameter
+      }
     if((l= strzlcmp(a,"--max-objects="))>0 && a[l]!=0) {
         // define maximum number of objects for --all-to-nodes
       global_maxobjects= oo__strtosint64(a+l);
@@ -11895,7 +12332,7 @@ return 6;
       fprintf(stderr,"osmconvert: Not enough memory for .o5m buffer.\n");
 return 5;
       }
-    }  // end   user wants borders
+    }  // end   .o5m format is needed as output
   if(global_diff) {
     if(oo_ifn!=2) {
       PERR("Option --diff requires exactly two input files.");
diff --git a/src/osmupdate.c b/src/osmupdate.c
index 5f77c10..d27ec84 100644
--- a/src/osmupdate.c
+++ b/src/osmupdate.c
@@ -1,5 +1,5 @@
-// osmupdate 2015-04-14 19:50
-#define VERSION "0.4.0"
+// osmupdate 2015-04-15 10:00
+#define VERSION "0.4.1"
 //
 // compile this file:
 // gcc osmupdate.c -o osmupdate
@@ -102,7 +102,7 @@ const char* helptext=
 "        and daily changefiles. If you want to limit these changefile\n"
 "        categories, use one or two of these options and choose that\n"
 "        category/ies you want to be used.\n"
-"        The option --sporadic allows to process changefile sources\n"
+"        The option --sporadic allows processing changefile sources\n"
 "        which do not have the usual \"minute\", \"hour\" and \"day\"\n"
 "        subdirectories.\n"
 "\n"
@@ -1646,5 +1646,4 @@ return 21;
     PINFO("Completed successfully.")
 
   return main_return_value;
-  }  // end   main()
-
+  }  // end   main()
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmctools.git



More information about the Pkg-grass-devel mailing list