System for producing compact location codes
10718621 ยท 2020-07-21
Inventors
Cpc classification
G06F16/00
PHYSICS
G06F16/9537
PHYSICS
G01C21/3617
PHYSICS
G01C21/3874
PHYSICS
International classification
G01C21/00
PHYSICS
G06F16/9537
PHYSICS
G06F16/00
PHYSICS
Abstract
The present invention provides a method, the QCODE method, of geotagging all postal addresses and other points of interest that one might want to navigate to and which allows the user to identify these addresses and other points of interest with a code consisting of 7 to 10 characters or less. A point of interest may or may not have a street address, for example, the main entrance to the Jefferson Building at the USPTO complex in Alexandria Va. or the entrance to the VIP parking area at Yankee Stadium. The disclosure teaches embodiments that are naturally upgraded to integrate changing spatial information due to addition of countries, better data, political changes, and other similar changes in geographical data. A single geocoding engine is capable of handling the various address formats in use in different countries and jurisdictions.
Claims
1. A satnav system implemented method for coding geographic locations associated with a desired object anywhere wherein the satnav system comprises a satnav device, wherein the method is implemented by the satnav device, the method comprising the steps of: systematically assigning a code to a specific geographic location where the code is comprised of a core code and an ancillary code; wherein the specific geographic location is identified by a latitude longitude pair; said code and latitude longitude pair are stored in a database; said database is stored remotely on a server or locally on the satnav device; wherein a user of the code can, for purposes of identifying the geographic location, identify the desired geographic location by entering the code on said satnav device using only the core code wherein the combined length of the core code is seven to ten characters; accessing by the satnav device the core code for said geographic location; performing a lookup in the database returning the latitude longitude pair to the satnav device; and directing the user to said specific geographic location; wherein the assigning of codes follows Zipf's law or the rank-size distribution rule.
2. The method of claim 1 wherein the combined length of the core code is seven or eight characters.
3. The method of claim 2 wherein the core code is comprised of a region code and a location code, and the ancillary code is comprised of a group code and an extended location code.
4. The method of claim 3 wherein the geographic location has a street address.
5. The method of claim 4 wherein the region code is purchased by a corporate customer.
6. The method of claim 4 wherein the region code and location code are specific to a particular individual.
7. The method of claim 1 wherein the code is comprised of a 32 base character set consisting of the alphabetic character set excepting I and O and the numeric character set excepting 0 and 1.
8. The method of claim 1 wherein the code is comprised of an 43 base character set consisting of the Cyrillic character set and the numeric character set.
9. The method of claim 1 wherein the code is comprised of a base character set consisting of computer generated symbols.
10. The method of claim 1 wherein the code is comprised of a base character set consisting of the Cantonese character set and the numeric character set.
11. A navigation system for generating routing information, the navigation system comprising: a satnav device comprising a processor, a user display, a software code, said software code programmed to run the satnav device, a user input device, a ROM, a RAM, a database, a power supply, a GPS receiver, and a GPS antenna; and a GPS satellite network; said GPS receiver receiving location information from the GPS satellite network via the GPS antenna wherein said database comprises a listing of geographic locations and a listing of codes and wherein each code in said listing of codes consisting of a group code, a region code, a location code, and an extended location code wherein further each code is assigned following Zipf's law or the rank-size distribution rule; wherein a user using said navigation system needs only to enter a region code and a location code to use said navigation system wherein the combined length of the region code and the location code is seven to ten characters.
12. The navigation system of claim 11 wherein the combined length of the region code and the location code is seven or eight characters.
13. The system of claim 12 wherein the region code is purchased by a corporate customer.
14. The system of claim 13 wherein the region code is specific to a particular location.
Description
BRIEF DESCRIPTION OF FIGURES
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
BEST MODE FOR CARRYING OUT THE INVENTION
(15)
(16) When the GPS receiver is activated, the GPS receiver receives radio signals via the GPS antenna. This allows the GPS Receiver to determine where it is on the surface of the earth. Therefore the satnav device always knows where it is. The user display of the satnav device is used to ask for user inputs (such as desired destination) and provide user with maps to assist in following the instructions created by the device to guide the user to their desired destination.
(17) The satnav device has non-volatile storage which is used to store the software to operate the device, maps in an electronic format and the database of addresses that relate to the maps. Typically, once a destination address is entered the software does a look-up in the database to find the latitude and longitude of the desired destination. In a satnav device using QCODE geotags the lookup is done on a table that contains all pertinent codes and the latitude and longitude associated with each code.
(18) The satnav device typically will have some sort of bulk data input capability, e.g. a memory stick or a SD memory card similar to those used in smartphones or digital cameras. This is used to load updated maps, software, QCODE geotags, etc. into the map and program device.
(19) All satnav devices have a method for the user to input data via the user input device. This may be a keyboard on a touch-screen display, or other such device, which is used by the user to input data, such as the desired destination.
(20) The processor of the satnav device receives the data input from the user, looks up the address in the map/address database to find desired destination (in latitude and longitude) and then calculates a route. When the satnav device is used in a vehicle, as the user's vehicle progresses along the route the processor displays constantly updates information (data and maps of current surrounding area) to assist the user in following the directions to the desired destination.
(21) Various embodiments of the present invention provide a method, hereafter referred to as the QCODE method of geotagging, to encode all addresses or other points of interest that a user might want to navigate to with a code designed such that the user may enter a code consisting of only 6 characters or less into a satnav navigation system and the satnav navigation system can identify the unique location corresponding to the code entered.
(22) Referring to
(23) A code is comprised of three parts: a group code comprised of three alphanumeric character(s); a region code comprised of two alphanumeric characters; and a location code comprised of four alphanumeric characters.
(24) A code may also comprise an extended location code comprised of four alphanumeric characters.
(25) In the preferred embodiment, the characters in a standard code (5 or 6 character set) are limited to the characters in the base character set. The base character set contains (a) all uppercase letters in the English alphabet excluding 0 and I and (b) the numbers 2 through 9. The numbers 0 and 1 are removed to prevent confusion with O and I from the alphabet. There are a total of 32 characters in the base character set. Hereafter alphabetic characters will be referred to as letters and numeric characters as numbers.
(26) It should be readily apparent that other character sets, such as the full English alphabet and numbers 0 through 9, such as letters from the Cyrillic alphabet, Cantonese characters, computer generated symbols, and the like may be used individually or in combination with other character sets including the base character set to accomplish the present invention without avoiding the teachings of the present invention.
(27) A user of the code need only enter six characters into a satnav system to identify a desired address. The six character code entered by the user is comprised of two characters of the region code and the four characters of the location code.
(28) The 3 characters of the group code are not known to the user and the user does not have to enter them. The satnav device knows where it is located and therefore can append the appropriate group code to the characters entered by the user.
(29) The preferred method to create and use the group code, a region code, and location code will be described herewith.
(30) Referring to
(31) In this embodiment the region code is only one character.
(32) Creation of Group Codes
(33) The group code is one of the key features of described geotagging method. Group codes are used to group countries into logical groups and thus allow the re-use of the region codes and location codes which allows all addresses in the world to be encoded with only 6 characters.
(34) In a preferred embodiment of the present invention, the group code is comprised of the alphabetic characters of the base character set.
(35) The logic behind the grouping of countries into groups and assigning group codes is that it would not be logical for a user of a satnav system to be, for example, located in the North America group and want to receive a set of directions guiding him to a destination located in Europe, or any of the other groups of countries. Group codes may follow the groupings used by the suppliers of the maps for satnav systems. In the preferred embodiment of the present invention, group codes are the first three characters of the complete code. However, the group codes are not seen or used by the user of the satnav system. The group codes are used internally by the satnav device to select the correct database when processing the region code and location code of the code entered by the user.
(36) A group code is assigned to each geographical group of countries whose maps are used by the typical satnav system. Typically maps can be grouped into continents that are the same as those used by manufactures of satnav systems. For example, USA, Canada, and Mexico may be grouped together and assigned the group code NAMthe group code assigned to North America. This is the grouping used by both Garmin (using maps provided by NAVTEQ of Chicago, Ill.) and TomTom (using TeleAtlas maps).
(37) Group code EUR may be assigned to the group of countries whose maps are called Europe by the satnav manufacturers.
(38) For example: an address in North America may have a code of NAM-CA-2234. And address in Europe may have a code of EUR-CA-2234. The region and location codes of the code (CA-2234) are identical for the two addresses, but the group codes are different and thus the addresses are different. When a user inputs the code CA-2234 the satnav device must know which address is the desired destination, the address in North America or the address in Europe. If the satnav device is located in North America then the address associated with code NAM-CA-2234 will be used. If the satnav device is located in Europe then the address associated with code EUR-CA-2234 will be used.
(39) A further example of group codes will be provided presently.
(40) In one preferred embodiment of the present invention group code NAM includes all addresses located in North America, including Canada, Mexico, USA, excluding Hawaii, and several Caribbean islands;
(41) Group code EUR includes all of the countries of Europe, including Turkey but excluding Russia;
(42) Island nations (Japan, Australia, New Zealand, and the like) each may receive their own separate group codes since one cannot logically be expected to drive (or walk) from one of these areas to another;
(43) This gives the island countries the advantage of having the full number of region codes (768 in the 6 character embodiment) to be used to encode their addresses. Certain groups of island nations (the islands in the Caribbean) may also be given their own group code.
(44) The People's Republic of China (China) and India both have populations that exceed 1 billion. This means that the number of addresses in these two countries may exceed the number of addresses that can be encoded within one group code. Thus it could be required to split these countries into two groups.
(45) In reality, although both India and China have populations exceeding 1 billion, the number of addresses will be significantly less than the one address per two inhabitants guideline used for developed countries. In both India and China many people live in houses that do not have addresses.
(46) The same is true for other areas of the world. In Africa, only 28% of the population lives in a building with an addresses according to the 2010 report of the Universal Postal Union.
(47) Table 2 details a sampling of an overall picture of how the countries of the world are grouped into different groups and given unique group codes.
(48) TABLE-US-00002 TABLE 2 Group Population Number of Code Region Country thousands Addresses CAN China China A 700,000 350,000 EUR Europe Multiple 664,517 332,258 CNB China China B 600,000 300,000 INA India India-A 600,000 300,000 INB India India-B 600,000 300,000 EAS Eastern Asia Multiple 572,500 286,250 CEA Central Asia Multiple 529,192 264,596 NAM Northern America Multiple 445,366 222,683 SAM Central & South Multiple 424,425 212,213 America RUS Russia Russian Federation 142,499 71,249 WEA Western Asia Multiple 137,371 68,686 JAP Japan Japan 127,967 63,983 SAF Southern Africa Multiple 55,682 27,841 KOR South Korea Republic of Korea 48,224 24,112 CAR Latin America & Multiple 41,246 20,623 Caribbean PKR North Korea Dem. People's 23,790 11,895 Republic of Korea TWN Taiwan Taiwan 23,071 11,536 AUS Australia Australia 20,743 10,372 OCE Oceania Multiple 9,345 4,673 ISR Israel Israel 6,928 3,464 NZL New Zealand New Zealand 4,179 2,089 Grand Total 6,663,265 3,331,632
Creation of Region Codes
(49) Referring again to
(50) In another embodiment, region codes could begin with numbers, allowing the encoding of additional addresses if needed.
(51) In the present embodiment with the six character code, each region code has 1,048,576 unique location codes available (32323232=1,048,576).
(52) In yet another embodiment, region codes could be comprised of a 36 character set comprising the letters of the English alphabet and the numbers from 0 through 9 inclusive.
(53) Assuming a ratio of one address per two inhabitants, one region code with 1,048,576 permutations can encode all of the addresses within an area with a population up to approximately 2 million. To allow for future growth of addresses and that the number of addresses will not equate exactly to 50 percent of the population, in the 6 character embodiment the allocation process will assign a maximum of 900,000 addresses, which equate to a population of 1.8 million, to any single region code.
(54) Within each group region codes will be allocated to each major administrative area. As a representative example, the North America group (USA, Canada, and Mexico) region codes will be allocated to:
(55) For USA
(56) with 1 region code allocated to the USA as a whole, e.g. US-XXXX and 1 region code reserved for each of 50 states, except Hawaii (Hawaii will be in its own group), plus District of Columbia for a total of 50; in the present embodiment, the two character codes assigned by the US Postal Service (USPS) to each state will be used and additional region codes as needed to code all addresses;
For Mexico with 1 region code allocated to Mexico as a whole MX-XXXX and 1 region code for each Federal State with additional region codes as needed to code all addresses within each Federal State;
For Canada with 1 region code allocated to Canada as a whole CN-XXXX and 1 region code allocated to each province and territory with additional region codes as needed to encode all of the addresses in Canada, estimated to be approximately 16 million.
Grouping Addresses into Cantons
(57) In cases where the population of a Level 2 Administrative Division (for example a county in the USA) is less than about 1.8 million, that Level 2 Administrative Division will be grouped with adjacent contiguous Level 2 Administrative Divisions so that the total population of the total group is as close as possible to the limit of about 1.8 million. These groups will be called cantons.
(58) The groupings may be based on either man-made Level 2 Administrative Divisions, such as a grouping of counties within a particular state in the USA or upon naturally occurring groups of Level 2 Administrative Divisions such as a grouping of counties along the Delaware Peninsula bordering the Chesapeake Bay and encompassing counties in three different states (Delaware, Maryland, and Virginia).
(59) The maximum number of addresses allowed for a particular region code will be about 900,000. Limiting the number of addresses in the same region code to 900,000 ensures that there are enough permutations of the four characters of the location code to encode all of the addresses that will be found within the boundaries of the region code and to allow for a growth of addresses and points of interest within the region code.
(60) The region code may also contain addresses located in multiple countries (for example addresses located in Belgium and the Netherlands, or Canada and USA).
(61) In the preferred embodiment, as a general guideline region codes are allowed to cross country borders when regular travel from one country to the other is normal and expected.
(62) Method for the Assigning of Region Codes
(63)
(64) Referring to
(65) In Step 7, if there is at least one SL2AD contiguous to the target, each SL2AD contiguous to the target is listed and sorted by population largest to smallest. The list of SL2ADs contiguous to the target L2AD is reviewed and sorted, largest to smallest, to facilitate the determination of whether contiguous SL2AD can be added to the target L2AD's population and not exceed a population of 1,800,000.
(66) In Step 8, if there is a contiguous SL2AD whose population may be added to the target L2AD's population and not exceed 1,800,000 then that contiguous SL2AD is grouped with the target L2AD and this new group becomes the target group, now consisting of two L2ADs.
(67) Step 7 is repeated until there are no additional contiguous SL2ADs that may be added to the target without having a combined population exceeding about 1,800,000.
(68) In Step 9, the result of Step 7 is negative, therefore proceed to Step 10.
(69) In Step 10, a canton code is assigned to each SL2AD comprising the target group. This canton code is added to all addresses in the address list that are located in the L2AD's that comprise the canton.
(70) The following procedure is used to assign canton codes to the target group. The canton code is assigned to facilitate data processing on addresses.
(71) Select the largest SL2AD in the target group. As those skilled in the art are aware, local authorities assign codes (names) to geographic areas within their borders; depending upon the size of the geographic area these codes identify L2ADs or L3ADs. For simplicity, these assigned codes may be assigned to the SL2ADs and a numeric suffix (e.g. 0.99) may be appended to the assigned code. For example: if code is ABCD then new code will be ABCD.99. This new code is the canton code for the SL2AD. This same code may also be assigned to all of the SL2ADs in the target group.
(72) In Step 11 all SL2ADs included in the target are considered to have been processed and are identified as such.
(73) In Step 12, if there are still unprocessed SL2ADs then Step 6 is repeated.
(74) In Step 13, each SL2AD is assigned a region code. All SL2ADs with the same canton code are assigned the same region code. SL2ADs with same canton code were grouped together in Steps 6, 7, and 8 and thus should be assigned the same region code. All available region codes are included in a region code list, where the region code list contains all permutations of two characters of the base character set for a total of 1,024 available region codes. When all SL2ADs have been processed (assigned region codes), then location codes may be assigned to the individual addresses within the L2ADs that make up the target group.
(75) Referring again to Step 4 in
(76) In Step 14, the largest unprocessed LL2AD will be selected. This LL2AD will be referred to as the target in the following steps.
(77) In Step 15 the target LL2AD is processed. As all LL2AD in sub-list B have a population greater than about 1.8 million, each LL2ADs must be sub-divided into parts, each part with a maximum population less than about 1.8 million. In the preferred embodiment, division will be along divisions previously created by local authorities such as US Census Bureau, Statistics Canada, UK Office of National Statistics, Statistisches Bundesamt Deutschland, etc.
(78) As will be readily apparent to those skilled in the art, divisions may be made along other criteria.
(79) It is preferable that the sub-groups used for division of L2ADs with a population greater than 1.8 million be composed of contiguous L3ADs and that the populations of the sub-groups be as equal as possible.
(80) In Step 16 a canton code is assigned to each element of the sub-group. As those skilled in the art are aware, local authorities assign codes (names) to geographic areas within their borders; depending upon the size of the geographic area these codes identify L2ADs or L3ADs. To assign canton codes; it is preferable to start with the sub-group with the largest population; this subgroup may be concatenated with the suffix 0.01 to the code assigned to the LL2AD by local authorities (called the base code) and assign this code to all elements of the sub-group. This code will then be the canton code for all elements of the sub-group.
(81) It is preferable to assign each element of the sub-group with the next largest population a code equal to the base code with 0.02 concantinated. This process may be repeated until all sub-groups of the target LL2AD have been assigned canton codes. As those skilled in the art are aware, other codes or symbols may be used to differentiate between cantons without deviating from the spirit of the invention; numeric incrimination was chosen as an example for its simplicity.
(82) In Step 17, the processed LL2AD is marked in the database as processed.
(83) All addresses located within a particular L3AD will be assigned the same region code.
(84) In the embodiments described here, region codes will be assigned to cantons manually. This will allow the assigning of region codes that, where possible, have some sort of pneumonic link to the common name for the area/areas are assigned to all addresses within a canton. For example, the region code for addresses in Brussels Belgium could be BR.
(85) In Step 18 a check is made to see if there are any LL2ADs still to be processed. If there are unprocessed LL2ADs, return to Step 14. If there are no remaining unprocessed LL2ADs, proceed to Step 19
(86) In Step 19, region codes are assigned to all LL2ADs that have been processed.
(87) After region codes have been assigned, proceed to Step 20 of
(88) In the preferred embodiment the region codes beginning with numbers are not used except when there are not enough available region codes in a particular group to allow for all region codes to start with a letter. This is accomplished by sorting the region code base list from A to Z, 2 to 9. Thus region codes beginning with numbers are sorted to the bottom of the list. Region codes are allocated starting from the top of the list. Therefore, the bulk of region codes will begin with a letter and it will be rare for region codes to begin with a number.
(89) Assigning Region Codes to Cantons
(90) Once cantons have been created for all areas of a geographical group (e.g. North America), and canton codes assigned, a region codes must be assigned to each canton. This can be done by randomly assigning the available permutations of the two character region code. However, in the preferred embodiments the region code assigned to a canton will have a pneumonic significance if possible. Example: a canton comprising the two counties of Buffalo and Smith in New York State may be assigned a region code of BU, as a shortened version of Buffalo.
(91) The assigning of a region codes to cantons in the preferred embodiments is preferably performed manually, which allows for a human to make judgments about the region code to be assigned.
(92) Merging the Region Code Database with the Address List Database.
(93) Before location codes can be assigned to the addresses in the address list, each address must have a region code assigned to it. Region codes are assigned to each address in the address list by merging a region code database with the address list database or by using a lookup database command. Doing this is a well know procedure for anyone skilled in the art.
(94) Once this merging has been done each address in the address list will have had a region code assigned to it. All addresses located within the same canton will have the same region code. Each canton will be assigned a unique region code.
(95) Cantons have been created in a manner that results in the total population within a particular canton being approximately 1.8 million. As a result of the one address per a population of two each canton will have approximately 900,000 addresses. Therefore since each canton is assigned a unique region code, there will be approximately 900,000 addresses in each region code grouping.
(96) Preparation of Location Code Base List
(97) In the preferred embodiment of the present invention depicted in
(98) Location codes are allocated from a file called the location code base list. The location code base list is created by taking the following steps.
(99) A list of all permutations of 4 characters from the 32 characters from the base characters set is created. This gives 1,048,576 permutations (32 to the 4th power).
(100) In the preferred embodiment, all of these permutations that spell words that may be considered offensive are removed. It is estimated that, including all major languages, the number of permutations removed in this stage would be less than 5,000. This would leave approximately 1,040,000 permutations of allowable 4 character codes.
(101) The remaining permutations are sorted, with A first and 9 last.
(102) The resulting list of approximately 1 million permutations is called the location code base list. An example is shown in Table 3 below.
(103) TABLE-US-00003 TABLE 3 Example of Permutations of Location Code A A A A A B B B A C C C A D D D A E E E A F F F A G G G A H H H A J J J A K K K
(104) It is from this list that a location code will be assigned to each address within each region code. Thus each region code will have its own location code base list. As a location code is assigned to a particular physical address from the address database list for the area being processed, the location code will be marked as assigned to prevent the same location code being used more than once within a particular canton.
(105) Preparation of Address Database
(106) The exact details (number of fields, field names and contents, etc.) of the address list that will be encoded will vary from country to country. However, the basics of the list will be roughly the same. Following is an example for a typical record in a USA address database.
(107) The address list used by a satnav device contains at a minimum of these fields for each address:
(108) address components (the human understandable portions of the address, e.g. 100 Main Street, Anytown, New York), and the latitude and longitude of the address or information that is sufficient to compute an approximate latitude and longitude for the address. Example: for a particular road there may be no information as to where on that road an address is located. Typically then, the satnav device calculates the mid-point of the road, determines the latitude and longitude of this mid-point and gives this latitude/longitude pair to the satnav software for processing and determining directions to that point.
(109) The address components are what will be typically entered by the user. The satnav device will perform a lookup on its database and return the latitude and longitude of the address. The satnav device will then calculate a path from the latitude and longitude of where the satnav is currently located to the latitude and longitude of the desired location.
(110) The address list of this preferred embodiment may contain one or more of the following fields:
(111) name1which indicates the proper name of the addressee (which could be the name of a person, a corporation, or other such as a park);
(112) name2which indicates text other than the proper name of the addressee;
(113) post office box number;
(114) floor (of a building);
(115) room (within a building);
(116) street addresswhich indicates a precise street address;
(117) routewhich indicates a named route (such as US 101);
(118) intersectionwhich indicates a major intersection, usually of two major roads;
(119) politicalwhich indicates a political entity (usually, this type indicates a polygon of some civil administration);
(120) countrywhich indicates the national political entity, and is typically the highest order type returned by the geocoder;
(121) administrative_area_level_1which indicates a first-order civil entity below the country level (within the United States of America, these administrative levels are states; not all nations exhibit these administrative levels);
(122) administrative_area_level_2which indicates a second-order civil entity below the country level (within the United States of America, these administrative levels are counties; not all nations exhibit these administrative levels);
(123) administrative_area_level_3which indicates a third-order civil entity below the L2AD level (this type indicates a minor civil division; not all nations exhibit these administrative levels);
(124) colloquial_areawhich indicates a commonly-used alternative name for the entity (as an example: Kings county New York is better known as Brooklyn);
(125) localitywhich indicates an incorporated city or town political entity;
(126) sublocalitywhich indicates a first-order civil entity below a locality;
(127) neighborhoodwhich indicates a named neighborhood;
(128) premiseswhich indicates a named location, usually a building or collection of buildings with a common name;
(129) sub-premisewhich indicates a first-order entity below a named location, usually a singular building within a collection of buildings with a common name;
(130) postal codewhich indicates a postal code as used to address postal mail within the country;
(131) natural featurewhich indicates a prominent natural feature;
(132) airportwhich indicates an airport;
(133) parkwhich indicates a named park; and point of interestwhich indicates a named point of interest (POI) (typically, these POI's are prominent local entities that don't easily fit in another category such as Empire State Building or Statue of Liberty).
(134) Only the fields from the listing above necessary for encoding an address are included in the preparation of the address database in the preferred embodiment of the present invention.
(135) Several of the above mentioned address components are particularly useful when creating and assigning region codes to Level 2 Administrative Divisions (L2AD) (e.g. counties in United States of America, provinces/territories in Canada, states in Mexico) that have a population greater than 1.8 million. These address components include items such as administrative_area_level_3which indicates a third-order civil entity below the L2AD level; a third-order civil entity indicates a minor civil division For the United States PUMA and Super-PUMA areas maintained by the US Census Bureau can be used. It is these L3ADs that are used to divide LL2ADs into cantons with populations of less than 1.8 million, as shown in
(136) colloquial_areawhich indicates a commonly-used alternative name for the entity; and
(137) localitywhich indicates an incorporated city or town political entity.
(138) This processed address list will be used to assign the location code portion of the code.
(139) It should be obvious that it is desirable to keep the information and codes up-to-date. The above mentioned method may be used to assign location codes to newly created addresses and points of interest when new structures are built and subsequently identified to keep the information and codes up-to-date.
(140) Allocation of Location Codes
(141) Referring now to
(142) In Step 21, the addresses in the address list for that geographical group are sorted by region code.
(143) In Steps 22, 23, 24 and 25 the addresses are further sorted. This sorting will result in addresses that are physically close to each other (on the same street for example) having similar location codes. For example 123 Main St. may have a code of AB-2345 and 125 Main St. may have a code of AB-2346. This is done in the preferred embodiment purely for marketing reasons. Location codes may be randomly assigned to the addresses.
(144) Referring again to
(145) In Steps 28 and 29 the location code assigned in Step 27 is provided the designation assigned so that it will not be reused within the current group and the associated address record is provided the designation processed so that it will not be reassigned a new location code.
(146) In step 30, determine whether additional addresses within this region remain which have not been assigned location codes. If there are additional unprocessed addresses, proceed back to Step 27; if all addresses have been processed, proceed to Step 31.
(147) In Step 31, determine whether all region codes within the particular country have been processed. If they have been processed, then proceed on to Step 32 to determine if all addresses in all countries have been processed. Referring again to Step 31, if all region codes for the particular country have not been processed, proceed to Step 26. Referring again to Step 32, if all addresses in all countries in the group have been processed, the process is completed; if there are countries remaining to be processed, proceed to Step 20.
(148) This process would be obvious to anyone skilled in the art.
(149) Upon completion of the process depicted in
(150) All addresses or locations within a particular group (for example North America) will have the same group code. For example, all addresses and locations in the North America group would have the group code NAM.
(151) Five Character QCODE Geotagging Method
(152) Referring now to
X=X(Bar)
where X is an integer representing the minimal number of required sub-groups to used in providing codes to all addresses and
(153) X(Bar) is the non-rounded quantity of required subgroups. X(bar) may be determined by use of the formula
X(Bar)=Y/57,000,000
wherein Y is the population of the group.
(154) If the decimal fraction portion of X(Bar) is less than or equal to 0.3, X is the truncated portion of X(Bar); if the decimal fraction portion of X(Bar) is greater than 0.3, X is rounded up to the next integer.
(155) For the representative example case of the North America group, the population is 465.4 million inhabitants and X(bar) is calculated to equal 8.00 and X subsequently equals 8; thus 8 would be the minimum quantity of sub-groups that would be required to provide geotags to all addresses located in the North America Group.
(156) Please note that alternative rounding coefficients may be chosen without deviating from the concept presented herein.
(157) A group may be subdivided into a greater number of sub-groups than determined by the above process. In the present example for North America, at least 8 sub-groups must be provided to allow for assigning location codes to all addresses in the North America group.
(158) In one preferred embodiment, depicted in
(159) Referring again to
(160) In Step 36, a review is made of a map of the group being processed, in this example North America. From Step 34 it was calculated that there must be at least 8 sub-groups. Canada has a population of 33.7 million; the maximum population of a sub-group is 57 million.
(161) Referring again to
(162) In the present example, and in referring to
(163) Mexico requires at least 2 sub-groups due to the size of its population. With Canada requiring 1 sub-group, that leaves 5 sub-groups available for the USA when 8 sub-groups are used as in this present example. Based on political and social factors, in the present preferred embodiment it may be better to divide the US into 6 sub-groups rather than 5 sub-groups. Therefore the total number of sub-groups for the North America group will be 9. The QCODE geotagging method would work perfectly with only 8 sub-groups but taking into account the desire of having an encoding method that results in codes that would be considered user friendly, it is preferred in this representative example to use 9 sub-groups.
(164) Referring to
(165) Each group of L2ADs (maximum allowed population of 1.8 million), is called a canton. Cantons are labeled in a geographically sequential manner and numbered from A01 to A32, for example in sub-group A. Each sub-group has 32 cantons.
(166) All cantons are not shown to keep the figure easy to read.
(167) Each sub-group may be labeled sequentially (A, B, C, D, etc.) until all sub-groups have been labeled. In the current embodiment the sub-groups will be labeled A through J, letter I is not used.
(168) Each sub-group may be divided into 32 cantons. A canton is comprised of a group of L2ADs and/or subdivisions of a L2AD. Each canton preferably should have a maximum population of approximately 1,800,000. In the preferred embodiment depicted in
(169) Cantons will preferably be labeled in an organized manner, for example, starting from the north-west corner of the sub-group, proceed east until edge of sub-group is reached, move south one L2AD, then proceed west until the western edge of the sub-group is reached, repeating this pattern until all L2ADs in the sub-group have been grouped into cantons.
(170) In this preferred embodiment this same pattern will be used to label cantons in all sub-groups.
(171) Referring again to
(172) In Step 40 a check is made to see if the maximum allowable population (approximately 57 million) has been reached. If not, then Step 39 is repeated. If maximum population has been reached or exceeded then proceed to Step 41.
(173) In step 41, as the total population in the sub-group has exceeded the available address quantity (57 million), the last canton added to the sub-group shall be removed to bring the total population of the sub-group below the 57 million maximum.
(174) In Step 42, a check is made to determine if all cantons have been added to a sub-group. If there are cantons remaining to be processed, return to Step 39. If all cantons have been processed, proceed to Step 43.
(175) In Step 43 single character region codes are assigned to all cantons. Each sub-group (e.g. A, B, C, . . . ) is processed sequentially. As an example, canton A-01 is assigned region code A, canton A02 is assigned region code B, canton A32 is assigned region code 9. Because there are 9 sub-groups, each single character region code (32 different characters) will be assigned to 9 different cantons, each canton belonging to a different sub-group.
(176) In Step 44, the process of Step 43 is repeated until all cantons in all sub-groups have been assigned a region code.
(177) In Step 45, location codes are assigned to each address. Using a sorted master address list for the group, the first address in sub-group A, canton 01 is assigned the first available location code in the location code list, AAA for example. At the same time, the region code assigned to the canton is assigned to the address. Thus the first address from the first canton (canton A01) will be assigned a region code plus a location code of A-AAAA. The next address will be assigned a code of A-AAAB.
(178) In Step 46, Step 45 is repeated until all addresses in the group have been assigned region codes and location codes. These two codes make up the full QCODE code, e.g. A-B234.
(179) Allocation of Final Region Codes to Cantons.
(180) In each group, the same code will be used several times, depending on how many sub-groups the group is divided into. In the preferred embodiment of the present invention, codes will be assigned to each address in the group in a manner that increases the probability that the first address proposed to the user of a satnav system is the desired one (note, in the present example, there will be nine different addresses that could be proposed for each code entered into the satnav device within North America).
(181) As those skilled in the art are aware there are several methods which may allow for the most probable address from the set of (in this example) 9 codes to be determined. One such method would be to have addresses sorted from closest to farthest from the users' current location.
(182) One preferred method to maximize the distances between locations assigned like codes would be to consistently begin assigning cantons at a corner of the first sub-group (e.g. the L2AD in the northwest corner of the sub-group would be assigned as the first canton) and then assigning cantons in a consistent method from there (e.g., the L2AD due east of the first L2AD would be assigned as the second canton, the next canton due east of the second canton would be assigned as the third canton, and so forth until there are no more L2ADs due east of the previously assigned canton within the sub-group; and then the first L2AD located due south of the first canton would be assigned as the next canton, and then the first L2AD located due east of this newly assigned canton would be assigned as the next canton; repeating this process until there are no more unassigned L2ADs in the sub-group). Upon assigning cantons to all L2ADs within the first sub-group, cantons can be assigned to other sub-groups following the same assignment pattern.
(183) In another preferred embodiment of the present invention a set of codes comprising only 4 characters may be used following the procedures similar to those used to establish 5 character long codes. With 4 characters, each code would be used/reused approximately 310 times.
(184) Additional QCODE Geotagging Embodiments (Special QCODE Geotags)
(185) In addition to the 5 and 6 character embodiments described previously, there are several other novel embodiments of the QCODE geotagging method. Representative examples of several of these additional embodiments are described herewith.
(186) In a preferred embodiment of the present invention using special QCODE geotags, the processing software would automatically determine which type of code was entered by the user. This is accomplished by reserving certain code characters for special applications, thus allowing the software to automatically determine which type of code was entered and then select the appropriate database to use.
(187) In the standard 6 character embodiment, the full base character set is used. In the special geotagging embodiments a modified character set may be used.
(188) In the preferred embodiment for using the special codes, the last (fourth) character of the location code may be limited to the letters of the alphabet, excluding I and O and with no numbers used. This reduces the number of permutations available for the location code and thus the maximum population of the L2ADs that are grouped into cantons. The maximum population of each canton would be 1.3 million instead of the 1.8 million used in the standard 6 character embodiment. This change has no material effect on the processes that have been described for the implementation of the 6 character embodiment.
(189) This modification makes it easy for the software to determine if the code entered is a standard code or a special code. For example, if the 4.sup.th character of the location code is a number (2 through 9, 0 and 1 are not used), then the code entered is a special code.
(190) In addition, the software may also identify the number of characters entered to determine if the code entered is a special code or a standard code. In this embodiment, the standard code is 6 characters long. All special codes are also 6 characters long with the exception of the personalized codes which can be from 4 to 8 characters.
(191) As should be obvious to those skilled in the art, the example given is just one of many methods that may be used, in conjunction with the appropriate allocation of codes to enable the satnav software to distinguish which type of code was entered. One could also require the user to indicate or select the type of code they are entering. However to anyone skilled in the art this is obviously a less preferred method.
(192) Referring now to
(193) As an additional enhancement to the special geotagging system, codes longer than 6 characters can be used in special application.
(194) As an example, for special codes a corporate customer may want to have their code to be more than 6 characters. McDonald's may prefer to have their special code be in the format: MAC-XXXX or MCD-XXXX. Programming the software to be able to identify these codes is easily done. The software may also easily be programmed such that when a user enters MAC the satnav returns to the user the closest McDonald's to the user's location.
(195) Although there may be other geotagging methods that allow geotagging with more than 6 characters, these methods are not as suitable to the user as the QCODE geotagging method. These other methods typically geocode a location by using an algorithm to shorten the latitude/longitude of the location or the coordinates of the location on a grid map system. This results in a geotag that can be something like AB2-2SDF or A23-56GH. With the QCODE geotagging method the geotag can be chosen to have a link to the group of locations being geocoded. As an example, all QCODE geotags for McDonald's restaurants begin with MD or MAC or MCD. This is of an obvious benefit to the corporate customer and to the user.
(196) Site QCODE Geotags
(197) In addition to the geocoding of postal addresses and points of interest (POI), the QCODE geotagging method can be used to geocode non-postal addresses or locations using the methods described previously. Henceforth in this document, this process will be termed site coding.
(198) As an example of using site coding, consider a large university, such as Stanford University in California. This university has over 15,000 students and a main campus of more than 8,000 acres (3,000 ha). On the main campus there are 100 s of buildings and other facilities.
(199) Many of the important on-campus locations do not have postal addresses. As is usual for such large facilities mail is delivered to only a few addresses and then either collected from the delivery point or distributed by the university itself.
(200) Without these important on-campus locations having postal addresses it can be very difficult for someone to find their way around the campus. Many of the buildings have specific street addresses but several entranceseach without a separate street address; the names of streets on campus property may not be included in third party maps; many points of interest for university visitors may not have addresses at all.
(201) Here is an example of the description of parking lots on the Stanford University campus. This description was taken from the Stanford University website.
(202) Parking Options
(203) (Near the Stanford Visitor Center) Visitor Center Lot (L-95) Galvez Street, between Nelson Road and Campus Drive (Visitor Parking Permit Vending Machine) Varsity Lot (L-97) Nelson Road, off Galvez Street adjacent to Stanford Stadium (Meters or purchase Parking Permit at Visitor Center Lot)
(204) With the 6 character QCODE geotagging method, the university could have its own region code, SU for example, and approximately 65,000 location codes unique to Stanford University. In one preferred embodiment, all site codes will end in either a 2 or a 3 to allow the processing software to immediately identify the code entered as a site code.
(205) These geotags could be downloaded from the Stanford University website or other internet based source and added to a user's satnav device, much like custom POIs can be added to current models of satnav devices.
(206) The university would issue a list of the codes for the various important points on its campus.
(207) For example, important locations at the football stadium could be encoded:
(208) SU-BBB2Stanford StadiumWest Entrance;
(209) SU-DDD3Stanford StadiumEast Entrance;
(210) SU-ABC2Stanford StadiumVIP Parking; and
(211) SU-CDE3Stanford StadiumParking Lot A
(212) In New York State there is another large university, Syracuse University, that may also want its own site codes. They may also want to use SU as the region code for their site codes because that is what the university calls itself when using an abbreviation.
(213) Insuring that the satnav device knows which region code database to use, each site code may be defined by a bounding polygon. If the satnav device is located within the bounding polygon of the site code for Stanford University, the device would use the database entries for Stanford. If the satnav device is located within the polygon defined for Syracuse University, then the database of location codes for Syracuse University would be used.
(214) If the satnav device is not located in either bounding polygon, then the device may be programmed to display the site code from the closest site and ask the user to confirm that they want to use the suggested site code.
(215) The region code SU would also, most probably, be assigned to a canton elsewhere in the North America group. Again, the satnav device may be easily programmed to make a logical choice of which set of geotags to use. The user could be asked to confirm the choice made by the software.
(216) The satnav software can easily be programmed by someone skilled in the art to, as a first step, determine if it is located within a predefined area of a site code. If that is the case, then the database of site QCODE code may be used to look-up the code entered by the user.
(217) Using this site-coding method means that there are essentially an unlimited number of region codes available for special coding because the region codes can be reused.
(218) This is similar to the way FM radio frequencies are allocated in the US. There are only 100 different FM radio channels (frequencies) however there are nearly 10,000 FM radio stations in the US. Stations broadcasting on the same frequency are kept separated by such large distances that one does not interfere with the other.
(219) Site coding could also allow workers at a particular municipality or company to use relatively inexpensive satnav devices (either a smartphone or a stand-alone satnav system such as those made by Garmin and TomTom) to locate particular items of interest. In the case of a maintenance worker a representative example would be a streetlight, a traffic light or a manhole cover. Site coding would also allow a maintenance system to have a coding system to uniquely identify each item requiring maintenance. Currently the locations of items of interest are typically described using easily misunderstood verbal descriptions. The present invention provides a more elegant and efficient way to identify these locations.
(220) The site coding technique may be used over a broad range of applications: national parks, large industrial complexes, shopping centers, etc. Some satnav device manufacturers are already supplying systems that can be used to help customers find their way around shopping centers and airports. Google Maps now supplies maps and directions for the insides of IKEA stores in the USA. NAVTEQ currently has location data on several hundred large buildings such as airports. The QCODE geotagging method may integrate with these systems very easily and would provide a standard across all satnav device manufacturers.
(221) Site coding may also be used with indoor mapping applications to assign individual geotags to specific indoor locations such as stores within a large shopping mall or airline counters within an airport.
(222) Personal QCODE Geotags
(223) In another embodiment of the present invention, the QCODE geotagging method may be used to provide individualized codes to individual persons or businesses. Much like many states in the US allow motorists to have individualized license plates, the QCODE geotagging method may do this a well. These individualized codes may be sold to individual persons or businesses.
(224) An example of a personal code for a person would be: A SMITH, or DK JOHNS. Although the personal code may be displayed with spaces included to enhance the readability, the code would be entered into the satnav device without spaces. If spaces are entered the satnav device software will remove the spaces before any processing is started.
(225) It is envisioned that the personal codes may be preferentially offered in codes from 4 to 10 characters long.
(226) The number of meaningful personal codes can be increased significantly by adding to the address database the L1AD (e.g. the state in the United States) for each address, POI or special code. As an example, in the North America group, for the United States, the appropriate state (e.g. New York, California, Texas, etc.) would be added to each record.
(227) With the addition of the L1AD to the database then the personal code JOHN SMITH may be used 50 times in the United States. When the user enters the code JOHN SMITH the satnav device would respond with the address of the JOHN SMITH in the state where the satnav is located. User would be asked to confirm is this is the JOHN SMITH location they want. If user confirms YES then the normal process continues.
(228) While the satnav device is awaiting the confirmation, it can be calculating the distance to the next closest JOHN SMITH locations. If user selects No, show me more addresses, then the next closest JOHN SMITH locations can be displayed, in order of their distance, closest first.
(229) The user then confirms which of these is the JOHN SMITH they want.
(230) Using this method may require the user to take the extra step of choosing another location but this would not happen frequently.
(231) There are other methods that may be used to allow the repeated use of the same personal code such as displaying the closest location first (regardless of L1AD), and then the remaining JOHN SMITH location if the closest one is not the one desired.
(232) The above described methods are not meant to in any way limit the ways that the processing of geotags is done by the satnav device.
(233) Corporate Geotags
(234) Organizations that have multiple locations such as McDonald's or Subway may desire to have geotags that are unique to them, in addition to the standard geotag that would be available for any of their locations that have postal addresses. Many of the outlets of such organizations may have locations that do not have postal addresses, or the postal address is not the actual location of the store.
(235) As part of their normal marketing activity these companies want to make it easy for customers to find the closest outlet for their brand. A satnav device would seem to be ideal for this however in many cases the location of the outlet does not have a normal or useful postal address. They may be located in a large shopping center, or other places where the mailing address for the outlet may not be close to the physical location of the actual outlet.
(236) Furthermore, in one preferred embodiment of the present invention, all corporate geotags will end in either the numeral six or seven. This will enable, for example, the region code MD to be used in the standard QCODE geotagging process system, as well as for McDonald's (MD-XXX6). The standard code with a region code of MD will not end in a number. The McDonald's corporate codes will end in either a six or a seven and therefore are easily distinguished by the processing software.
(237) The use of smartphones with access to the internet is increasing rapidly. An application may easily be written that would help the smartphone user to quickly find the closest McDonalds.
(238) They simply enter MD and the geotag of the closest McDonald's is returned. The smart phone would then give them directions to that location. Methods to develop a query program to support such an application are well known to database developers and the method used to produce this query is not critical to the use of this invention.
(239) In a preferred embodiment of these special types of geotags the software would automatically determine which type of geotag was entered by the user. This is accomplished by reserving certain codes for these special applications, thus allowing the software to automatically determine which type of code was entered and then select the appropriate database to use.
(240) It is also envisioned that it may be preferable for the corporate geotag to be 7 characters long. For example: for McDonald'sMCD-XXXX or MAC-XXXX, depending on the preference of the corporate customer. Allowing for corporate geotags to be 7 characters long and still automatically distinguish them from other types of geotags is easily done by someone skilled in the art.
(241) Universal Postal Codes
(242) In another preferred embodiment of the QCODE geotagging method, by adding to the code, preferably before the region code for ease of readability, the two letter ISO 3166-1 code (or similar universally accepted codes) for the country in which the address is located, the resulting code may be used as a universal postal code system.
(243) For example: for an address in the United States with a QCODE geotag of LA-2345, the addition of the two character ISO 3166-1 code for the United States US before the code would give a universal postal code for that address of US-LA-2345. Since the QCODE geotagging method assigns a unique code to every address within a particular geographical area (such a North America) the addition of a two character country code would uniquely identify the address.
(244) For anyone skilled in the art, it is obvious that this universal postal code could be linked via a database to enable individual country postal systems to sort mail according to any method that they would normally use for the delivery of mail.
(245) Using QCODE Geotags in a Satnav Device
(246) Refer again to the satnav system presented in
(247) Referring to
(248) For this example it is assumed that device has a touch screen display. Other methods of user input such as a keyboard may be used for the user to interact with the satnav device.
(249) In Step 48, the user is presented with a screen. User chooses to use a QCODE geotag to input the details of his desired destination.
(250) In Step 49, user is presented with screen where they enter the QCODE code of the desired destination.
(251) In Step 50, processing software of the satnav devices checks the code: does the code entered have the correct number of characters, and check for invalid characters.
(252) If the entered code fails any of the tests then user is taken to a screen where he is asked to re-enter the code. This screen is not shown.
(253) In Step 51, the code has been looked up in a database (the North America database in this example) and the latitude/longitude pair plus the address are retrieved from the database.
(254) In Step 52 the address associated with the code is presented to the user to confirm that it is correct. If address is correct user selects Correct, take me there button. Satnav device then proceeds to give direction to the address as if it had been entered manually. This is a process well known to those skilled in the art.
(255) If address is not correct user selects Re-enter QCODE and is then taken to a screen where he can re-enter the code.
(256) Using the 5 Character QCODE Geotag
(257) Refer again to the satnav system presented in
(258) Now referring to
(259) For this example it is assumed that device has a touch screen display. A keyboard is not shown for reasons of clarity.
(260) In Step 54, the user is presented with a screen. User chooses to use a QCODE code to select his desired destination.
(261) In Step 55, user is presented with screen where they enter the code of the desired destination and then click Next.
(262) In Step 56, processing software of the satnav devices checks the code. Checks are made for invalid characters, such as, in this embodiment, I, O, 1, and 0.
(263) If entered code fails any of the tests then user is taken to screen where he is asked to re-enter the code. This screen is not shown.
(264) In Step 57, the code has been looked up in database (the North America database in this example). Because the same code is assigned to multiple addresses (9 addresses in the North America example), multiple addresses will be found in the database for the same code.
(265) In the preferred embodiment these results are sorted by distance from the user, nearest address first, furthest address last.
(266) In Step 58 the two closest addresses are presented to the user, the closest address shown above the second closest. The screen presented to the user asks them to choose which of the two addresses is their desired location. It is estimated that the average distance between any two locations with the same code will be approximately 1,000 kilometers/600 miles. According to data from the US Census Bureau, the average non-work commute car journey in the US is 7.6 miles. Based on these two facts, it is presumed that there is a high probability that one of the first two locations presented to the user will be the location they desire.
(267) If neither of the locations shown is the one desired by the user then he/she selects the Show me more addresses. button.
(268) As shown in Step 59, the next two (in distance) addresses are presented to the user. This process is repeated until the desire location is presented and the user selects the Go Here button.
(269) In Step 60, the latitude and longitude of the selected location is passed on to the software of the satnav device. The satnav device then follows its normal process to provide directions to the desired location.
(270) It is obvious that if desired, the screen shown in Step 6 may show more than 2 addresses which means that the likelihood that the desired location is presented during the first presentation would be increased even further. One of the factors that may determine the number of addresses presented at one time would be the size of the screen and the size of the font used to present the information.
(271) Using Special QCODE Geotags
(272) Refer again to the satnav system presented in
(273) Referring now to
(274) In Step 61 the software determines the number of characters in the entered code.
(275) In Step 62, all codes that are 6 characters long are processed by the software to determine if they are a personal code, corporate code or a site code.
(276) In Step 63, the value of the 6th character of the entered code is determined.
(277) In Step 64, if the value of the 6th character is 2 or 3, then the code is a site code. This site code is looked up in the site code database; the corresponding address data is retrieved, and presented to the user. If user confirms the address data, then that data is passed to the standard software for generation of driving directions. If the user does not confirm the address information to be correct, then user is taken to an error screen and requested to check the code and re-enter it.
(278) In Step 65, if the sixth character is a 6 or a 7 then the code is determined to be a corporate code. The corporate code is looked up in the corporate code database and the process of Step 64 is followed.
(279) In Step 66, if the 6th character is not a two or a three, nor a six nor a seven, then the code is either a standard code or a personalized code.
(280) In Step 67, the standard code address information in retrieved from the standard address database and the personalized code information is retrieved from the appropriate database.
(281) Next the process detailed in Step 64 is followed.
(282) In Step 68, the two addresses retrieved in Step 67 are presented to the user. They are presented in the order of closeness to user.
(283) In Step 69 the user selects which of the addresses/locations is his desired destination.
(284) In Step 70 the necessary information for the location chosen by the user is passed on to the normal satnav software. The satnav software then calculates the best path to the destination.
(285) If the code entered in Step 61 has 4, 5, 7, or 8 characters, then it is identified as a personal code.
(286) In Step 71 the database for personal codes is used to look up the address associated with the code.
(287) In Step 72 the name and address information for the corresponding address is presented to the user for confirmation.
(288) In Step 73, after user has confirmed which address he wants, the appropriate information is passed to the standard satnav device software. The software then calculates the appropriate directions to the desired destination.
(289) Examples of Methods of Displaying QCODE Geocodes
(290) Referring now to
(291) Although several embodiments of the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention. The various embodiments used to describe the principles of the present invention are by way of illustration only and should not be construed in any way to limit the scope of the invention. Those skilled in the art will understand that the principles of the present invention may be implemented in any suitably arranged device.