Abstract geographic locations into square blocks of predefined size

By dividing the geographic area into grid parts and generating predefined reference locations, the cloud service experience and connectivity issues without obtaining accurate user location data are solved, and privacy-preserving cloud interaction measurement analysis and improvement guidance are achieved.

CN114631090BActive Publication Date: 2025-09-30MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080075850.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-11-01
Filing Date
2020-10-19
Publication Date
2025-09-30
Estimated Expiration
2040-10-19

AI Technical Summary

Technical Problem

Existing technologies make it difficult to understand and improve user experience and connectivity issues of cloud services without obtaining accurate user location data, especially when there is a lack of effective measurement and improvement guidance when enterprise internal networks and cloud services interact.

Method used

Abstracted location information is generated by the client device, the geographical area is divided into grid parts, and its corresponding predefined reference location is provided to the remote server computing system for cloud interaction measurement and analysis, avoiding direct tracking of user locations.

Benefits of technology

It enables analysis and improvement of user experience and connectivity issues of cloud services without exposing the user's specific location, provides guidance on improving cloud experience and resource deployment, and complies with privacy regulations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114631090B_ABST
    Figure CN114631090B_ABST
Patent Text Reader

Abstract

The client-side system detects the current location of the client device and cloud interaction metrics. The geographic area surrounding the client device's location is divided into grid segments. The client-side system identifies a predefined reference location corresponding to the grid segment in which the client device is located. The predefined reference location and cloud interaction metrics corresponding to the grid segment are provided to a remote server computing system.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Computing systems are widely used today. Some computing systems host services or other applications that are accessed by client devices.

[0002] In order for users to access cloud services, user devices (sometimes mobile devices) need to have connectivity to a wide area network (e.g., the Internet). To enable users to connect to enterprise applications over the WAN, the enterprise's internal network is available at an Internet egress point. Due to the protections required to maintain security and integrity, many enterprises currently provide Internet egress points in several different locations.

[0003] It may be beneficial for a cloud service to measure metrics specific to an enterprise so that the cloud service can determine how the enterprise's internal network (or other characteristics) impacts its cloud experience. The cloud service can then provide information to the enterprise indicating how to improve its cloud experience. Furthermore, if the measured metric does not include the user location identifying where the metric was measured, the measured metric may be less useful to the cloud service. Without the user's location, the metric has less context for evaluation.

[0004] The above discussion provides general background information only and is not intended to be used as an aid in determining the scope of the claimed subject matter. Summary of the Invention

[0005] The client-side system detects the current location of the client device and cloud interaction metrics. The geographic area surrounding the client device's location is divided into grid segments. The client-side system identifies a predefined reference location corresponding to the grid segment in which the client device is located. The predefined reference location and cloud interaction metrics corresponding to the grid segment are provided to a remote server computing system.

[0006] This summary is provided to introduce some selected concepts in a simplified form, which are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all of the disadvantages noted in the background. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Figure 1 is a block diagram of an example of a computing system architecture that uses location abstraction.

[0008] Figure 2A and Figure 2B (collectively referred to herein as FIG. 2 ) illustrates the process of generating an abstract location of a client device. Figure 1 A flowchart illustrating one example of the operation of the architecture is shown.

[0009] Figure 3 is a flow chart illustrating one example of how to divide a geographic area of ​​interest into grid portions of predetermined size.

[0010] Figure 4 Is to indicate that when returning an abstract position for position input Figure 1 An example of the operation of the location abstraction system is shown in a flow chart.

[0011] Figure 5 is a flowchart illustrating one example of how a cloud services computing system may use an abstract location.

[0012] Figure 6 It shows the deployment in cloud computing architecture Figure 1 A block diagram of the architecture is shown.

[0013] Figure 7-9 An example of a mobile device that can be used in the architecture shown in the previous figures is shown.

[0014] Figure 10 is a block diagram illustrating one example of a computing environment that may be used in the architectures shown in the previous figures. DETAILED DESCRIPTION

[0015] As mentioned above, knowing the geographic location of a user of a cloud service or another application that provides client access to a remote server environment can be helpful in many different scenarios. However, many regions have privacy regulations that govern what type of user location data can be obtained and what can be done with it. Similarly, it can be difficult to get users to voluntarily disclose their location data. However, without any type of user location data, it can be difficult for a cloud service to understand and fix (or advise the enterprise on how to fix) any connectivity issues, even if cloud interaction metrics are measured and obtained. As a result, it can be difficult to determine how to improve the deployment of computing system resources and how to improve the user experience.

[0016] However, it has been found that some scenarios (e.g., connectivity design) do not require accurate individual user location information. Instead, these types of systems can focus on user groups, and a substantial approximation of location is sufficient to make many decisions. Furthermore, when an enterprise advocates for connectivity design across its organization (e.g., at a branch office), it may be important for the enterprise to understand the impact this has on the cloud experience experienced at the branch office.

[0017] The present description is therefore directed to a client-based location system that generates an abstracted location based on an actual user location. The abstracted location provides a predefined reference location corresponding to a grid portion having a predefined area and including the user's actual location.

[0018] Figure 1 is a block diagram of a computing system architecture 100. Architecture 100 shows a client device / computing system 102 accessing a cloud service computing system 104 via a network 106. Thus, network 106 may be a wide area network, a local area network, a cellular network, a near field communication network, or any of a variety of other networks or a combination of networks.

[0019] Figure 1 Shown, in one example, is client device 102 generating user interface 108 for interaction with user 110 . User 110 illustratively interacts with user interface 108 to control and manipulate portions of client device / computing system 102 and cloud service computing system 104 .

[0020] Figure 1 Also shown is that one or more other client devices / computing systems 112 can generate a user interface 114 for interaction with other users 116. Users 116 can thus interact with user interface 114 to control and manipulate portions of client device / computing system 112 and remote server computing system 104.

[0021] The cloud services computing system 104 may run one or more applications that receive as input the locations of the various client devices 102, 112 using it, as well as one or more cloud interaction metrics that are measured and indicate characteristics of the client devices' cloud interactions with respect to the cloud services. A metric is illustratively a metric whose measurement is influenced by the location of the corresponding client device relative to the cloud services computing system 104. Therefore, this discussion will focus on client devices 102, 112 generating abstracted location information and cloud interaction metrics and providing them to the cloud services computing system 104. It should be noted that the client devices 102, 112 may be similar or different. For the purposes of this description, they will be assumed to be similar, so that only the client device / computing system 102 will be described in more detail.

[0022] The client device / computing system 102 (sometimes referred to herein as client device 102) illustratively includes one or more processors 118, a data repository 120, cloud interaction metric measurement logic 121, a location sensing system 122, a communication system 124, a location abstraction system 126, a user interface system 128, and may include a variety of other client computing system functions 130. The cloud service computing system 104 illustratively includes one or more processors or servers 132, one or more data repositories 134, and a location data consumption application 136 (which itself may include a user grouping system 138, a measured metric analysis system 139, a connectivity analysis system 140, and other items 142). The cloud service computing system 104 may also include a variety of other remote server computing system functions 144. Before describing the overall operation of the architecture 100, a brief description of some of the items in the architecture 100 and their operation will first be provided.

[0023] The location data consuming application / service 136 can be any of a variety of different types of services or applications. In the example described herein, it can be an application or service that analyzes connectivity information to improve the remote server computing system 104 and improve the experience of various users 110, 116 (which can be users at an enterprise or other organization) when using their client devices 102, 112 to connect to the cloud service computing system 104. Thus, the user grouping system 138 can group users 110, 116 based on their geographic location (or abstracted location). The measured metric analysis system 139 can perform any of a variety of different types of analysis on the measured metrics received from the client devices 102, 112. The connectivity analysis system 140 can analyze any connectivity issues, such as load balancing issues, resource deployment and management issues, latency, and a variety of other matters based on the abstracted location and the analysis performed by the system 139.

[0024] It should be noted that client device / computing system 102 can take many different forms. It can be a mobile device, a desktop computer, or other device. It illustratively includes cloud interaction metric measurement logic 121, which can measure one or more different metrics that can characterize different aspects of the interaction between client device 102 and cloud services computing system 104, where the metric values ​​vary based on, or are in some way dependent on, the location of the measuring device 102, or are corrected to the location of the measuring device 102. Some examples of measured metrics are described in more detail below. Client device 102 also illustratively includes a location sensing system 122 that senses the location of device 102. Thus, location sensing system 122 can be a GPS receiver, a cellular triangulation system, a dead reckoning system, or any of a variety of other systems that can generate a geolocation signal indicating the sensed geographic location of device 102 in a local or global coordinate system. Location abstraction system 126 illustratively abstracts the location provided by location sensing system 122. It does this by obtaining a set of grid segments into which the geographic area surrounding device 102 is divided. It identifies which grid section the device 102 is contained in, and then selects a predefined reference location corresponding to that grid section as the abstract location of the device 102. Thus, the precise location of the device 102 is abstracted to a geographic area the size of the grid section. The predefined reference location of the grid section can be the center of the grid section, one of the corners of the grid section, etc.

[0025] The communication system 124 is configured to facilitate communication between the client device / computing system 102 and the cloud service computing system 104 via the network 106. Thus, the communication system 124 may vary depending on the type of communication it is facilitating. The communication may involve a network that provides multiple different paths between the systems 102 and 104.

[0026] The user interface system 128 illustratively generates the user interfaces 108 and detects user interactions with those interfaces. It can provide indications of user interactions with the interfaces 108 to other items in the client device / computing system 102 (and possibly to the cloud service computing system 104).

[0027] Figure 2A and 2B(collectively referred to herein as FIG2 ) shows a flowchart illustrating one example of the operation of a client device / computing system 102 in generating and sending cloud interaction metrics and abstract location information to a cloud service computing system 104. Assume first that the cloud service computing system 104 (or another remote system) or the client device / computing system 102 generates a grid representation of the geographic area surrounding the client device / computing system 102. This is indicated by box 150 in the flowchart of FIG2 . The grid representation illustratively divides the geographic area surrounding the device 102 into a set of grid portions of predefined sizes. Generating it in the cloud service is indicated by box 152, and generating it otherwise is indicated by box 154. Figure 3 One way of generating a grid representation of a geographic area is described in more detail.

[0028] A grid representation of a geographic area is obtained by the location abstraction system 126 on the client device / computing system 102. This is indicated by block 152 in the flowchart of FIG2 . A grid representation can be obtained for the entire world 158. It can be obtained for a predetermined area of ​​interest surrounding the current location of the client device / computing system 102, as indicated by block 160. Alternatively, a grid representation can be obtained for an area of ​​dynamically determined size based on a sizing criterion, as indicated by block 162. For example, if the location of the client device / computing system 102 is relatively static, a grid representation of the geographic area of ​​interest surrounding that location can be obtained with a predefined size. However, if the location of the client device / computing system 102 is changing relatively rapidly (e.g., if the user 110 is carrying it on an airplane, or for other reasons), the geographic area surrounding the device 102 for which the grid representation is obtained can be expanded to encompass a wider area. A grid representation can also be obtained on the client device / computing system 102 in other ways, as indicated by block 164. Once obtained, the device 102 has a geographical area surrounding it divided into equally sized grid portions.

[0029] The cloud interaction metric measurement logic 121 can measure cloud interaction metrics in various ways. Metrics can include things like the latency experienced from the location of the client device 102 to the location of the network entry point to the services provided by the cloud services computing system 104. A metric can also include the throughput of a file download on the client device 102 from the network entry point to the cloud-based service. A metric can also include a simulated call experience on the client device 102 from the network entry point to the cloud-based service. These are just examples.

[0030] The cloud interaction measurement logic 121 may measure metric values, as shown in block 165. They may be measured intermittently (as shown in block 167), substantially continuously (as shown in block 169), or in other ways (as shown in block 171). The logic 121 then stores the measured metric values ​​in the data repository 120 for transmission to the cloud service computing system 104. Storing the metric values ​​is indicated by block 173 in FIG. 2 .

[0031] At some point, the location sensing system 122 will generate a location signal that indicates the sensed current location of the client device / computing system 102. It may do this intermittently, periodically, or based on other criteria. For example, if the location of the client device / computing system 102 is relatively static, the location sensing system 122 may generate a location signal relatively infrequently. However, if the location of the device / computing system 102 is changing rapidly, the location sensing system 122 may generate a location signal that indicates its location more frequently or substantially continuously (e.g., in near real time). Determining whether the location sensing system 122 should generate a location signal that indicates the current location of the client device / computing system 102 is indicated by block 166 in the flow chart of FIG. 2 .

[0032] When the time comes, the location sensing signal 122 detects the current location (e.g., longitude / latitude coordinates) of the client device / computing system 102. This may be referred to as the "client location" and is indicated by block 168 in the flowchart of FIG. 2 . The location abstraction system 126 receives the client location and identifies the grid portion (in the grid representation) that includes the client location, and then identifies a predetermined reference location corresponding to the grid portion. Identifying the grid portion is indicated by block 170 and identifying the reference location for the grid portion is indicated by block 172. In one example, steps 170 and 172 are performed together. Figure 4 A more detailed example of this is shown and discussed in and Table 1.

[0033] As briefly mentioned above, the predefined reference location corresponding to the identified grid portion that includes the client location can be the center point of the grid portion, as shown in block 174. It can be a predefined one of the corners of the grid portion, as shown in block 176. It can be another predefined reference location corresponding to the grid portion, and this is indicated by block 178. The system 126 can store the abstract location and the actual location provided by the location sensing system 122 in the data repository 120 for later analysis or transmission to the cloud service computing system 104, or it can use communication 124 to transmit the abstract location and measured metric values ​​to the remote server computing system 124 immediately after it is identified.

[0034] Determining whether the abstracted client location and measured metric values ​​are to be sent to another system (e.g., the cloud services computing system 104) is indicated by block 180 in the flowchart of FIG2 . This determination may be based on a time criterion as indicated by block 182 . For example, the communication system 124 may intermittently or periodically transmit the abstracted location of the client device / computing system 102 . This determination may be based on the location of the client device / computing system 102 , or it may be based on a determination of whether the location of the client device / computing system 102 has changed. For example, if the abstracted location has changed since it was last sent, the communication system 124 may only transmit the new abstracted location of the client device / computing system 102 to the cloud services computing system 104 . Transmitting the abstracted location based on location or a change in location is indicated by block 184 in the flowchart of FIG2 .

[0035] The communication system 124 may send the abstract location and the measured metric value based on the usage criteria. For example, if the client device / computing system 102 is frequently accessing the cloud service computing system 104, its abstract location may be sent more frequently to the remote server computing system 104. Determining whether to send the abstract location based on the usage criteria is indicated by block 186 in the flowchart of FIG. 2 .

[0036] The determination of whether to send the abstract client location and the measured metric value may also be based on other criteria. This is indicated by block 188 in the flow chart of FIG. 2 .

[0037] If the abstract client location (or measured metric value) has not yet been sent to the remote server computing system 104, as shown in block 190, the location abstraction system 126 stores the abstract client location in the data repository 120 so that it can be sent later. The location sensing system 122 may also store the actual client location. Storing the client location and the identified reference location (or abstract location) is indicated by block 192.

[0038] If it is determined at block 190 that the abstract location is to be sent to the cloud services computing system 104, the communication system 124 obtains from storage any stored reference locations (or abstract locations) that have not yet been sent to the remote server computing system 104 and that have corresponding stored metric measurements. This is indicated by block 194. It then sends those reference locations (or abstract locations) and metric measurements to the remote server computing system 104. This is indicated by block 196. This process may continue until the operation of the client device 102 is complete. This is indicated by block 198.

[0039] It should be noted that the cloud service computing system 104 does not need to track the location of the device 102, but only reports the abstract location of the device 102 when measuring cloud interaction metrics, so that the measurement value can be related to the location of the device 102 when the measurement is performed.

[0040] Figure 3 is a flowchart illustrating an example of how geographic regions on Earth can be divided into segments, each with a predefined area. The first thing to note is that at any latitude, the distance between two longitudinal degrees varies depending on the latitude angle according to the following equation:

[0041] The distance between two longitude degrees at any latitude = COS (latitude angle) * (distance between two longitude degrees at the equator) Equation 1

[0042] From Equation 1 above, we can see that a change of 1 degree in longitude at the equator corresponds to a distance of 111 kilometers.

[0043] As an example, assume that the grid section in question is a square grid section where each side measures 300 meters. In this case, the longitude change for any latitude (Lat D) over 300 meters is as follows:

[0044] 300 / 111*1000*COS(LatD) Equation 2

[0045] This is called the longitude delta.

[0046] Unlike longitude, the difference between two degrees of latitude does not change at different longitudes. Instead, the distance on the Earth's surface covered by a change of one degree of latitude is as follows:

[0047] The distance between two latitudes = 136,000 meters, so the increment of x meters will be = x / 136000,

[0048] For x=300m, latitude increment=300 / 136000=0.0022 Equation 3

[0049] This will be called the latitude delta.

[0050] Reference again Figure 3 To obtain the grid segments for the relevant geographic area, first divide the distance between each pair of latitude degrees into segments of length x meters (where x is the desired length of one side of the grid segment or grid part). This is determined by Figure 3 This is indicated by block 200 in the flowchart of FIG. As described above, this can be done using a delta measure. This is indicated by block 292. It can also be done in other ways, as indicated by block 204.

[0051] Next, the distance between each pair of longitude degrees in the region of interest is divided into segments, each segment having a distance of x meters (where x is again the side length of the grid portion or grid segment). This is indicated by block 206. This can be done using the longitude delta measurement discussed above. This is indicated by block 208. It can also be done in other ways, and this is indicated by block 210. The axes of the segmentation (along the longitude and latitude lines) define the grid segments in the region of interest.

[0052] Figure 4 is a flow chart indicating how the location abstraction system 126 identifies a particular grid segment and a predefined reference location (or abstracted location) for a received particular longitude and latitude. It is first assumed that the location abstraction system 126 receives a client location. This is done by Figure 4 The location abstraction system 126 then calculates the maximum longitude (max long) after adding the increment of the longitude increment (truncated to degrees) from the beginning of the longitude indicated by the client location, but less than the current untruncated longitude in the client location. Assuming that the predefined reference for a grid segment is the lower left corner of the grid segment, the calculation finds the longitude coordinate corresponding to that corner. This is determined by Figure 4 214 in the flowchart of FIG.

[0053] Next, the location abstraction system 126 calculates the maximum latitude (max lat) after adding the increment of the latitude increment from the start of the latitude indicated by the client location (truncated to degrees), but less than the current untruncated latitude in the client location. This finds the latitude coordinate of the lower left corner of the grid portion where the client location is located. This is determined by Figure 4 216 in the flowchart of FIG.

[0054] The location abstraction system 126 then returns the max lat / max long point as the abstract location (or predefined reference location) for the grid segment that includes the received latitude and longitude coordinates in the client location. Figure 4 218 in the flowchart of FIG.

[0055] Table 1 shows another form of pseudo-code for finding the lower left corner of a 300 square meter grid segment that includes longitude and latitude coordinates input from the location sensing system 122 (client location).

[0056] Table 1

[0057] / / algorithm

[0058] / / Calculate the distance between two changes in Long at the input Lat angle

[0059] / / Calculate the delta as a decimal to represent the 300m distance between two longitudes

[0060] / / divide the degrees in multiple segments of 300 meters, starting with returning the closest segment of the input long

[0061] / / (Similar for changing from Long to Lat)

[0062] / / Finish

[0063] function(lat,long)GetAbstractedLatLong(InputLat,InputLong)

[0064] {

[0065] / / Extract the degree part of the input Lat Long, for example, lat = 45.89827, the degree is 45

[0066] latDegree=GetDegree(InputLat);

[0067] longDegree=GetDegree(InputLong);

[0068] latDecimal=GetDecimals(InputLat);

[0069] LongDecimal=GetDecimals(InputLong);

[0070] / / Exception: We don't want to compute 300m bins at or near the poles because the variation is so large and the expected customer cluster is not significant (if (latDegree>87));

[0071] return;

[0072] / / The distance between two long degrees at Lat 0 (equator) is 111 kilometers

[0073] / / The distance between two Lat degrees of Lat L1 is 111*COS(LatDegrees)

[0074] / / The distance between two Lat degrees does not change with Long degree, it is a constant~

[0075] longVariation300M=300 / (11*1000*COS(latDegree))

[0076] latVariation300M=300 / (136*1000)

[0077] / / Calculate the number of 300 meters suitable for a single Long degree at the input Lat angle (degrees)

[0078] / / Similar for Lat

[0079] / / Extract the starting point of the 300-meter block to which the input Long belongs, such as 0.7842 / 0.0022

[0080] longBlock=Floor(LongDecimal / longVariation300M)

[0081] latBlock=Floor(latDecimal / latVariation300M)

[0082] / / If the current block crosses the count boundary, consider the previous block

[0083] If(longBlock+1)*longVariation300M>1)

[0084] then longBlock=longBlock–1

[0085] If(latBlock+1)*latVariation300M>1)

[0086] then latBlock=latBlock–1

[0087] return(longDegree+longBlock*longVariation300M,latDegree+latBlock*latVariation300M)

[0088] }

[0089] Figure 5 is a flow chart illustrating one example of the operation of the location data consuming application or service 136. It is first assumed that the client abstract location data and measured metric values ​​are received by the cloud service computing system 104 from the client devices / computing systems 102 and 112. Figure 5 The user grouping system 138 then groups the users 110, 116. There may be a variety of different grouping criteria, such as based on their geographic location, as indicated by abstract location data corresponding to those users (and / or their corresponding client devices / computing systems 102, 112), based on networking metadata, and / or other criteria. Grouping users and / or devices is performed by Figure 5The grouping based on location is indicated by box 221, the grouping based on networking metadata is indicated by box 223, and the grouping based on other criteria is indicated by box 225.

[0090] The measured metric analysis system 139 then analyzes the measured metrics, and the connectivity analysis system 140 analyzes connectivity and traffic patterns based on the location and size of the group. This is indicated by block 224. For example, if a relatively large group of users or devices frequently access the cloud service computing system 104, and they are all grouped in a geographic location, then the connectivity and traffic patterns in that geographic location may be high. Additionally, a shared device pool may result in a relatively large number of users, rather than a large number of devices.

[0091] The location data consuming application / service 136 may perform additional processing and analysis based on the size and location of the group, as indicated by the abstracted location data. This is indicated by block 226. The location data consuming application / service 136 may then generate relevant action signals based on the analysis. This is indicated by block 228. For example, the action signals may include changing the routing of traffic when interacting with the cloud services computing system 104, deploying additional resources in different geographic locations to improve connectivity, reducing computing resources in other locations, displaying instructions for analysis to be performed by design, management, or engineering personnel, or various other relevant action signals.

[0092] It should be noted that the above discussion has described a variety of different systems, components and / or logic. It should be appreciated that such systems, components and / or logic may include hardware items (e.g., a processor and associated memory, or other processing components, some of which are described below) that perform the functions associated with those systems, components and / or logic. In addition, the systems, components and / or logic may include software that is loaded into memory and subsequently executed by a processor or server or other computing component, as described below. The systems, components and / or logic may also include different combinations of hardware, software, firmware, etc., some examples of which are described below. These are just some examples of different structures that can be used to form the above-mentioned systems, components and / or logic. Other structures may also be used.

[0093] This discussion has mentioned processors and servers. In one embodiment, processors and servers comprise computer processors with associated memory and timing circuitry, not separately shown. They are functional parts of the systems or devices to which they belong and are activated by and facilitate the functionality of other components or items in those systems.

[0094] In addition, many user interface displays have been discussed. They can take many different forms, and a variety of different user-actuated input mechanisms can be set thereon. For example, the user-actuated input mechanism can be a text box, a check box, an icon, a link, a drop-down menu, a search box, etc. They can also be actuated in various ways. For example, they can be actuated using a point and click device (for example, a trackball or a mouse). They can be actuated using a hardware button, a switch, a joystick, or a keyboard, a thumb switch, or a thumb pad, etc. They can also be actuated using a virtual keyboard or other virtual actuators. In addition, in the case where the screen displaying them is a touch-sensitive screen, they can be actuated using touch gestures. In addition, in the case where the device displaying them has a voice recognition component, they can be actuated using voice commands.

[0095] A number of data repositories are also discussed. It is worth noting that each of these can be broken down into multiple data repositories. All can be local (to the system accessing them), all can be remote, or some can be local and others remote. This article considers all of these configurations.

[0096] Furthermore, these figures show many blocks, with functionality attributed to each block. It should be noted that fewer blocks can be used, so functionality is performed by fewer components. Furthermore, more blocks can be used with functionality distributed across more components.

[0097] Figure 6 yes Figure 1 , except that its elements are arranged in a cloud computing architecture 500. Cloud computing provides computing, software, data access and storage services that do not require the end user to know the physical location or configuration of the system delivering the services. In various examples, cloud computing uses appropriate protocols to deliver services over a wide area network (e.g., the Internet). For example, a cloud computing provider delivers applications over a wide area network, and they can be accessed through a web browser or any other computing component. The software or components of architecture 100 and the corresponding data can be stored on servers at a remote location. The computing resources in a cloud computing environment can be consolidated at a remote data center location, or they can be dispersed. Cloud computing infrastructure can deliver services through a shared data center, even if they appear to be a single access point for the user. Therefore, the components and functions described here can be provided from a service provider at a remote location using a cloud computing architecture. Alternatively, they can be provided from a traditional server, or they can be installed directly on the client device, or in other ways.

[0098] This description is intended to include both public and private cloud computing.Cloud computing (both public and private) provides a substantially seamless pool of resources and a reduced need to manage and configure the underlying hardware infrastructure.

[0099] Public clouds are managed by the provider and typically support multiple customers using the same infrastructure. Furthermore, unlike private clouds, public clouds free end users from having to manage hardware. Private clouds can be managed by the organization itself or a third party, and the infrastructure is typically not shared with other organizations. The organization still maintains some level of hardware maintenance, such as installation and repair.

[0100] exist Figure 6 In the example shown, some items are similar to Figure 1 The items shown in and they are similarly numbered. Figure 6 Specifically shown is that the remote server computing system 104 can be located in a cloud 502 (which can be public, private, or a combination where some are public and others are private). Thus, users 110 , 116 access these systems through the cloud 502 using user devices 102 , 112 .

[0101] Figure 6 Another example of a cloud architecture is also depicted. Figure 6 It is also contemplated that some elements of computing system 104 may be located in cloud 502, while others may not. For example, data repository 134 may be located outside of cloud 502 and accessed through cloud 502. In another example, location data consumption application / service 136 (or other items) may be outside of cloud 502. Regardless of where they are located, they may be accessed directly by devices 102, 112 over a network (wide area network or local area network), they may be hosted at a remote site by a service, or they may be provided as a service through the cloud or accessed by a connectivity service residing in the cloud. All of these architectures are contemplated herein.

[0102] It will also be noted that the architecture 100 or portions thereof can be deployed on a variety of different devices, some of which include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as PDAs, cell phones, smart phones, multimedia players, personal digital assistants, and the like.

[0103] Figure 7 is a simplified block diagram of one illustrative example of a handheld or mobile computing device that may be used as a user's or customer's handheld device 16 in which the present system (or portions thereof) may be deployed. Figure 8-9 are examples of handheld or mobile devices.

[0104] Figure 7A general block diagram of the components of a client device 16 that can run component computing systems 102, 112 or interact with architecture 100, or both, is provided. In device 16, a communication link 13 is provided that allows the handheld device to communicate with other computing devices, and in some embodiments, provides a channel for automatically receiving information, such as by scanning. Examples of communication link 13 include an infrared port, a serial / USB port, a wired network port such as an Ethernet port, and a wireless network port that allows communication via one or more communication protocols, including General Packet Radio Service (GPRS), LTE, HSPA, HSPA+ and other 3G and 4G radio protocols, lXrt and Short Message Service (which are wireless services used to provide cellular access to the network), and Wi-Fi protocols and Bluetooth protocols (which provide local wireless connections to the network).

[0105] In other examples, the application or system is received on a removable secure digital (SD) card connected to the SD card interface 15. The SD card interface 15 and the communication link 13 communicate with a processor 17 (which may also embody processors or servers from other figures) along a bus 19, which is also connected to a memory 21 and input / output (I / O) components 23, as well as a clock 25 and a position system 27.

[0106] In one example, I / O components 23 are provided to facilitate input and output operations. Various examples of I / O components 23 for device 16 may include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches, and output components (e.g., display devices, speakers, and / or printer ports). Other I / O components 23 may also be used.

[0107] Clock 25 illustratively includes a real-time clock component that outputs time and date. It can also illustratively provide a timing function for processor 17.

[0108] Position system 27 illustratively includes components that output the current geographic location of device 16. This may include, for example, a Global Positioning System (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning systems. It may also include, for example, mapping software or navigation software that generates desired maps, navigation routes, and other geographic functions.

[0109] Memory 21 stores an operating system 29, network settings 31, applications 33, application configuration settings 35, a data repository 37, communication drivers 39, and communication configuration settings 41. Memory 21 may include all types of tangible, volatile, and non-volatile computer-readable memory devices. It may also include computer storage media (described below). Memory 21 stores computer-readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions in accordance with the instructions. Similarly, device 16 may have a client system 24 that may run various applications or embody part or all of architecture 100. Processor 17 may also be activated by other components to facilitate their functions.

[0110] Examples of network settings 31 include things like proxy information, internet connection information, and maps. Application configuration settings 35 include settings that customize applications for a specific business or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items like GPRS parameters, SMS parameters, connection usernames and passwords.

[0111] The applications 33 may be applications that have been previously stored on the device 16 or applications that are installed during use, although these may be part of the operating system 29 or may be hosted externally to the device 16 .

[0112] Figure 8 An example is shown where device 16 is a tablet computer 600. Figure 8 In FIG, computer 600 is shown having a user interface display screen 602. Screen 602 can be a touch screen (so that touch gestures from a user's finger can be used to interact with the application) or a pen-enabled interface that receives input from a pen or stylus. It can also use an on-screen virtual keyboard. Of course, it can also be attached to a keyboard or other user input device through an appropriate attachment mechanism (e.g., a wireless link or a USB port). Computer 600 can also illustratively receive voice input.

[0113] Figure 9 The device shown may be a smartphone 71. Smartphone 71 has a touch-sensitive display 73 that displays icons or tiles or other user input mechanisms 75. A user can use mechanism 75 to run applications, make calls, perform data transfer operations, etc. Generally speaking, smartphone 71 is built on a mobile operating system and provides more advanced computing power and connectivity than feature phones.

[0114] Note that other forms of device 16 are possible.

[0115] Figure 10 is an example of a computing environment in which, for example, architecture 100 or portions thereof may be deployed. Figure 10, an example system for implementing some embodiments includes a general purpose computing device in the form of a computer 810 that is programmed to operate as described above. Components of the computer 810 may include, but are not limited to, a processing unit 820 (which may include a processor or server from the previous figures), a system memory 830, and a system bus 821 that couples various system components including the system memory to the processing unit 820. The system bus 821 may be any of a variety of types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example and not limitation, such architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association (VESA) local bus, and the Peripheral Component Interconnect (PCI) bus, also known as the Mezzanine bus. About Figure 1 The memory and program described can be deployed in Figure 10 in the corresponding part.

[0116] Computer 810 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computer 810 and includes both volatile and non-volatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media can include computer storage media and communication media. Computer storage media is distinct from and does not include modulated data signals or carrier waves. It includes hardware storage media, including both volatile and non-volatile, removable and non-removable media implemented in any method or technology, for storing information, such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical disk storage devices, magnetic cassettes, magnetic tape, magnetic disk storage devices or other magnetic storage devices, or any other medium that can be used to store the desired information and is accessible by computer 810. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a transport mechanism and includes any information delivery media. The term "modulated data signal" refers to a signal whose characteristics are set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.

[0117] The system memory 830 includes computer storage media in the form of volatile and / or nonvolatile memory, such as read-only memory (ROM) 831 and random access memory (RAM) 832. A basic input / output system 833 (BIOS), containing the basic routines that help to transfer information between elements within the computer 810, such as during startup, is typically stored in ROM 831. RAM 832 typically contains data and / or program modules that are immediately accessible to and / or currently being operated on by the processing unit 820. By way of example, and not limitation, Figure 10 Operating system 834 , application programs 835 , other program modules 836 , and program data 837 are illustrated.

[0118] The computer 810 may also include other removable / non-removable volatile / non-volatile computer storage media. For example only, Figure 10 A hard disk drive 841 is shown that reads from or writes to a non-removable, non-volatile magnetic medium, and an optical drive 855 is shown that reads from or writes to a removable, non-volatile disk 856, such as a CD ROM or other optical media. Other removable / non-removable, volatile / non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic cassettes, flash memory cards, digital versatile disks, digital video tapes, solid-state RAM, solid-state ROM, etc. The hard disk drive 841 is typically connected to the system bus 821 via a non-removable memory interface, such as interface 840, and the optical drive 855 is typically connected to the system bus 821 via a removable memory interface, such as interface 850.

[0119] Alternatively or additionally, the functions described herein may be performed, at least in part, by one or more hardware logic components. For example, but not by way of limitation, illustrative types of hardware logic components that may be used include field programmable gate arrays (FPGAs), program-specific integrated circuits (ASICs), program-specific standard products (ASSPs), system-on-chip systems (SOCs), complex programmable logic devices (CPLDs), and the like.

[0120] The above discussion and Figure 10 The drives and their associated computer storage media shown in FIG. 8 provide storage of computer readable instructions, data structures, program modules and other data for the computer 810. Figure 10844, application programs 845, other program modules 846, and program data 847. Note that these components can be the same as or different from operating system 834, application programs 835, other program modules 836, and program data 837. Operating system 844, application programs 845, other program modules 846, and program data 847 are given different numbers here to illustrate that, at a minimum, they are different copies.

[0121] A user can enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861 (e.g., a mouse, trackball, or touchpad). Other input devices (not shown) may include a joystick, a game controller, a satellite dish, a scanner, and the like. These and other input devices are typically connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected through other interfaces and bus structures, such as a parallel port, a game port, or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface such as a video interface 890. In addition to the monitor, the computer may also include other peripheral output devices, such as speakers 897 and a printer 896, which may be connected through an output peripheral interface 895.

[0122] The computer 810 operates in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, handheld device, server, router, network PC, peer device, or other public network node, and typically includes many or all of the elements described above with respect to the computer 810. Figure 10 The logical connections depicted in the figure include a local area network (LAN) 871 and a wide area network (WAN) 873, but may also include other networks. Such networking environments are common in offices, enterprise-wide computer networks, intranets and the Internet.

[0123] When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873 (e.g., the Internet). The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860 or other appropriate mechanism. In a networking environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example and not limitation, Figure 10Remote application programs 885 are illustrated as residing on remote computer 880. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.

[0124] It should also be noted that the different examples described herein can be combined in different ways. That is, parts of one or more examples can be combined with parts of one or more other examples. All of these are considered herein.

[0125] Example 1 is a computer-implemented method comprising:

[0126] receiving a set of location coordinates indicating a location of a client device;

[0127] identifying a predefined geographic grid portion having a predefined area, the predefined geographic grid portion including the set of location coordinates;

[0128] identifying a predefined reference location corresponding to the identified predefined geographic grid portion as an abstract client location;

[0129] measuring a location-varying metric value corresponding to the abstract client location; and

[0130] The abstract client location and corresponding metric values ​​are sent to a remote computing system.

[0131] Example 2 is the computer-implemented method of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0132] Corner coordinates corresponding to corners of the identified predefined geographic grid portion are identified.

[0133] Example 3 is the computer-implemented method of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0134] Center coordinates corresponding to a center of the identified predefined geographic grid portion are identified.

[0135] Example 4 is a computer-implemented method of any or all of the previous examples, wherein receiving a set of location coordinates comprises:

[0136] Receives the client's longitude coordinate and the client's latitude coordinate.

[0137] Example 5 is the computer-implemented method of any or all of the previous examples, wherein the predefined area comprises a square having a pair of longitude and latitude sides, each side having a length of x length units.

[0138] Example 6 is the computer-implemented method of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0139] The longitude value of the corner coordinate is identified by calculating a maximum longitude value corresponding to a predefined reference position of one of the predefined geographic grid portions, the maximum longitude value being less than the client longitude value.

[0140] Example 7 is the computer-implemented method of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0141] The latitude value of the corner coordinate is identified by calculating a maximum latitude value corresponding to a predefined reference position of one of the predefined geographic grid portions, the maximum latitude value being less than the client latitude value.

[0142] Example 8 is a computer-implemented method of any or all of the previous examples, wherein sending the abstract client location comprises:

[0143] The maximum latitude value and the maximum longitude value are sent.

[0144] Example 9 is the computer-implemented method of any or all of the previous examples, wherein x length units comprises x meters, and wherein the client longitude coordinate comprises client Long-D degrees, and wherein the client latitude coordinate comprises client Lat-D degrees, and wherein identifying the longitude value of the corner coordinate comprises:

[0145] Identify the longitude delta as x / 111,000m*cos(ClientLat-D); and

[0146] Add the increment of the longitude increment from the starting point of the client Long-D degrees, truncated to full degrees, to obtain the maximum longitude value less than the client Long-D degrees.

[0147] Example 10 is the computer-implemented method of any or all of the previous examples, wherein identifying the latitude value of the corner coordinate comprises:

[0148] Recognizes latitude increments as x / 136000; and

[0149] Add the increment of the latitude delta from the starting point of the client Lat-D degrees, truncated to full degrees, to obtain the maximum latitude value.

[0150] Example 11 is a computer system comprising:

[0151] a metric sensor that senses a value of a cloud service interaction variable that varies based on location;

[0152] a location sensor that senses a geographic location corresponding to the value of the cloud service interaction variable and generates a location signal indicative of the sensed geographic location;

[0153] one or more processors; and

[0154] A memory storing computable and executable instructions, which, when executed by the one or more processors, cause the one or more processors to perform steps comprising:

[0155] generating a set of location coordinates indicative of a sensed geographic location based on the location signal;

[0156] identifying a predefined geographic grid portion having a predefined area, the predefined geographic grid portion including the set of location coordinates;

[0157] identifying a predefined reference location corresponding to the identified predefined geographic grid portion as an abstract client location; and

[0158] The abstract client location and corresponding values ​​of the cloud service interaction variable are sent to a remote computing system.

[0159] Example 12 is the computer system of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0160] Corner coordinates corresponding to corners of the identified predefined geographic grid portion are identified.

[0161] Example 13 is the computer system of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0162] Center coordinates corresponding to a center of the identified predefined geographic grid portion are identified.

[0163] Example 14 is the computer system of any or all of the previous examples, wherein receiving a set of location coordinates comprises:

[0164] Receives the client's longitude coordinate and the client's latitude coordinate.

[0165] Example 15 is the computer system of any or all of the previous examples, wherein the predefined area comprises a square having a pair of longitude and latitude sides, each side having a length of x length units.

[0166] Example 16 is the computer system of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0167] The longitude value of the corner coordinate is identified by calculating a maximum longitude value corresponding to a predefined reference position of one of the predefined geographic grid portions, the maximum longitude value being less than the client longitude value.

[0168] Example 17 is the computer system of any or all of the previous examples, wherein identifying the predefined reference location comprises:

[0169] The latitude value of the corner coordinate is identified by calculating a maximum latitude value corresponding to a predefined reference position of one of the predefined geographic grid portions, the maximum latitude value being less than the client latitude value.

[0170] Example 18 is the computer system of any or all of the previous examples, wherein sending the abstract client location comprises:

[0171] Send the maximum latitude and longitude values.

[0172] Example 19 is a computer system comprising:

[0173] a metric measurement system that measures an interaction metric that varies based on a location where the interaction metric is measured;

[0174] a position sensor that senses a geographic location and generates a position signal indicative of the sensed geographic location;

[0175] one or more processors; and

[0176] A memory storing computable executable instructions that, when executed by the one or more processors, cause the one or more processors to implement:

[0177] a location abstraction system configured to generate a set of location coordinates indicating a sensed geographic location based on the location signal, identify a predefined geographic grid portion having a predefined area that includes the set of location coordinates, and identify a predefined reference location corresponding to the identified predefined geographic grid portion as an abstracted client location corresponding to the interaction metric; and

[0178] A communication system transmits the abstract client location and corresponding interaction metrics to a remote computing system.

[0179] Example 20 is the computer system of any or all of the previous examples, wherein the location abstraction system is configured to identify the predefined reference location by identifying corner coordinates corresponding to corners of the identified predefined geographic grid portion.

[0180] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims

1. A computer-implemented method comprising: receiving a set of location coordinates indicating a location of a client device; identifying a predefined geographic grid portion having a predefined area; determining that the predefined geographic grid portion includes the set of location coordinates; identifying a predefined reference location defined relative to the identified predefined geographic grid portion as an abstract client location; generating, by the client device, an interaction metric corresponding to the abstract client location, wherein the interaction metric represents a characteristic of an interaction between the client device and a remote service, and the interaction characteristic varies based on a location of the client device at which the interaction metric is measured; as well as The abstract client location and the interaction metric are sent by the client device to a remote computing system remote from the client device.

2. The computer-implemented method of claim 1 , wherein: Identifying the predefined reference position includes: Corner coordinates corresponding to corners of the identified predefined geographic grid portion are identified.

3. The computer-implemented method of claim 1 , wherein: Identifying the predefined reference position includes: Center coordinates corresponding to a center of the identified predefined geographic grid portion are identified.

4. The computer-implemented method of claim 2, wherein: Receiving a set of location coordinates includes: Receives the client's longitude coordinate and the client's latitude coordinate.

5. The computer-implemented method of claim 4, wherein: The predefined area comprises a square having a pair of longitude and latitude sides, each side having a length of x length units.

6. The computer-implemented method of claim 5, wherein: Identifying the predefined reference position includes: The longitude value of the corner coordinate is identified by calculating a maximum longitude value corresponding to the predefined reference position of one of the predefined geographic grid portions, the maximum longitude value being less than the client longitude value.

7. The computer-implemented method of claim 6, wherein: Identifying the predefined reference position includes: The latitude value of the corner coordinate is identified by calculating a maximum latitude value corresponding to the predefined reference position of one of the predefined geographic grid portions, the maximum latitude value being less than the client latitude value.

8. The computer-implemented method of claim 7, wherein: Sending the abstract client location includes: The maximum latitude value and the maximum longitude value are sent.

9. The computer-implemented method of claim 8, wherein: The x length units include x meters, and wherein the client longitude coordinate includes client Long-D degrees, and wherein the client latitude coordinate includes client Lat-D degrees, and wherein the longitude value identifying the corner coordinate includes: Identify the longitude delta as x / 111000*cos(ClientLat-D); and Incremental amounts of the longitude increment, truncated to full degrees, are added from a starting point of the client Long-D degrees to obtain the maximum longitude value that is less than the client Long-D degrees.

10. The computer-implemented method of claim 8, wherein: The client latitude coordinate includes client Lat-D degrees, and the latitude value identifying the corner coordinate includes: Recognizes latitude increments as x / 136000; and The increments of the latitude increments truncated to full degrees are added from the starting point of the client Lat-D degrees to obtain the maximum latitude value.

11. A computer system comprising: a metric sensor that senses a value of a cloud service interaction variable that varies based on a location of the computer system at which the cloud service interaction variable is measured and represents an interaction between a cloud service and the computer system; a location sensor that senses a geographic location corresponding to a value of the cloud service interaction variable and generates a location signal indicative of the sensed geographic location, the cloud service interaction variable varying based on a location of the computer system; one or more processors; as well as a memory storing computable and executable instructions, which, when executed by the one or more processors, cause the one or more processors to perform steps comprising: generating, based on the location signal, a set of location coordinates indicative of the sensed geographic location; identifying a predefined geographic grid portion having a predefined area, the predefined geographic grid portion including the set of location coordinates; identifying a predefined reference location corresponding to the identified predefined geographic grid portion as an abstract client location; and An indication of the abstract client location and the sensed value of the cloud service interaction variable are sent from the computer system to a remote computing system remote from the computer system.

12. The computer system according to claim 11, wherein: Identifying the predefined reference position includes: Corner coordinates corresponding to corners of the identified predefined geographic grid portion are identified.

13. The computer system according to claim 11, wherein: Identifying the predefined reference position includes: Center coordinates corresponding to a center of the identified predefined geographic grid portion are identified.

14. The computer system according to claim 12, wherein: Receiving a set of location coordinates includes: Receives the client's longitude coordinate and the client's latitude coordinate.

15. A client computing device comprising: a location sensor that senses a geographic location of the client computing device and generates a location signal indicative of the sensed geographic location; one or more processors; as well as a memory storing instructions executable by the one or more processors, wherein the instructions, when executed, cause the client computing device to: measuring an interaction metric that varies based on a location of the client computing device at which the interaction metric is measured, the interaction metric representing an interaction between the client computing device and a remote service remote from the client computing device; generating a set of location coordinates indicative of the sensed geographic location based on the location signal; identifying a portion of a predefined geographic grid having a predefined area that includes the set of location coordinates; identifying a predefined reference location corresponding to the identified predefined geographic grid portion as an abstract client location corresponding to the interaction metric; and The abstract client location and corresponding interaction metrics are sent to a remote computing system remote from the client computing device.