United States Patent Application20040117358
Kind CodeA1
von Kaenel, Tim A. ; et al.June 17, 2004

Method, system, and program for an improved enterprise spatial system
Abstract
Disclosed is a method, system, and program for providing access to spatial data. A request for data is received. Enterprise and third party data are integrated. The integrated data is processed. Spatially referenced results are generated using the processed data. The spatially referenced results are returned in response to the request.

Inventors:von Kaenel; Tim A. (Coto de Caza, CA), Dyrnaes; David Neil  (Newport Coast, CA), Kumar; C. Suresh  (Ladera Ranch, CA), Wayman; Jared Paul  (Laguna Niguel, CA), Goodwin; Jonathan David  (Laguna Niguel, CA), Trivelpiece; Craig Evan  (Newport Beach, CA), Mihalich; Joseph  (Rancho Santa Margarita, CA), Jenkins; Anthony Page  (Aliso Viejo, CA), ;   (Charlottesville, VA), Stier; Mark Andrew  (Laguna Neguel, CA), Obee; Anne Janetta  (Santa Ana, CA)
Correspondence Name and Address:315 S. Beverly Drive, Suite 210
KONRAD RAYNES VICTOR & MANN LLP
Beverly Hills
CA
90212
US
Series Code:388666
Filed:March 14, 2003
U.S. Current Class:707/003
U.S. Class at Publication:707/003
Intern'l Class:G06F 007/00

Claims


What is claimed is:
1. A method for processing data, comprising: receiving a query; retrieving data for the query from at least one of an enterprise data store and a third party data store; processing the data; and returning a result for the query.

2. A method for providing access to spatial data, comprising: receiving a request for data; integrating enterprise and third party data; processing the integrated data; generating spatially referenced results using the processed data; and returning the spatially referenced results in response to the request.

3. The method of claim 2, further comprising: coupling a data processing center to a live data processing center to provide for viewing of the spatially referenced results.

4. The method of claim 2, wherein processing the integrated third party data and enterprise data comprises at least one of: cleansing the integrated third party data and enterprise data; and geocoding the third party data and enterprise data.

5. The method of claim 2, wherein the results comprise data layers in a first order and further comprising: modifying an order of the data layers.

6. The method of claim 2, further comprising: updating at least one of the third party data and enterprise data in real time.

7. The method of claim 2, wherein the spatially referenced results comprise data layers and further comprising: providing hierarchical access control to each of the data layers.

8. The method of claim 2, wherein the spatially referenced results comprise data layers further comprising: storing the data layers as pyramided data; receiving a request to scale a first data layer; and automatically selecting a second data layer to be returned in response to the request.

9. The method of claim 2, wherein the spatially referenced results comprise data layers and further comprising: combining the data layers to form a printable file.

10. The method of claim 2, further comprising: receiving an order for stored data; collecting the requested data; and forwarding the collected data to a requested location.

11. The method of claim 2, further comprising: providing at least one of purchase order handling, shopping cart management, billing, user profile management, and account management

12. The method of claim 2, further comprising: enabling sharing of the spatially referenced results across multiple users.

13. The method of claim 2, further comprising: sending a handoff to a third party system; and receiving at least one of a handback from the third party system or updated data.

14. The method of claim 2, further comprising: enabling editing of the spatially referenced results.

15. The method of claim 2, further comprising: generating the spatially referenced results using metadata.

16. A system for providing access to spatial data, comprising: means for receiving a request for data; means for integrating enterprise and third party data; means for processing the integrated data; means for generating spatially referenced results using the processed data; and means for returning the spatially referenced results in response to the request.

17. An article of manufacture for providing access to spatial data, wherein the article of manufacture is capable of causing operations, the operations comprising: receiving a request for data; integrating enterprise and third party data; processing the integrated data; generating spatially referenced results using the processed data; and returning the spatially referenced results in response to the request.

18. A method for manipulating a composite image, comprising: retrieving data layers, wherein each data layer comprises an image; forming a first composite image from one or more of the retrieved data layers, wherein the one or more of data layers forming the first composite image are stored in a structure; receiving a request to manipulate one or more of the data layers in the first composite image; and when the request may be performed without retrieving an additional data layer, modifying the data layers stored in the structure; and overlaying the data layers stored in the structure to form a second composite image.

19. The method of claim 18, wherein the request is to remove the data layer.

20. The method of claim 18, wherein the request is to reorder the data layers.

21. The method of claim 18, wherein the request is one of panning, zooming, and refreshing one of the data layers.

22. The method of claim 18, wherein the request is to view a new data layer.

23. A system for manipulating a composite image, comprising: means for retrieving data layers, wherein each data layer comprises an image; means for forming a first composite image from one or more of the retrieved data layers, wherein the one or more of the data layers forming the first composite image are stored in a structure; means for receiving a request to manipulate one or more of the data layers in the first composite image; and when the request may be performed without retrieving an additional data layer, means for modifying the data layers stored in the structure; and means for overlaying the data layers stored in the structure to form a second composite image.

24. An article of manufacture for manipulating a composite image, wherein the article of manufacture is capable of causing operations, the operations comprising: retrieving data layers, wherein each data layer comprises an image; forming a first composite image from one or more of the retrieved data layers, wherein the one or more of data layers forming the first composite image are stored in a structure; receiving a request to manipulate one or more of the data layers in the first composite image; and when the request may be performed without retrieving an additional data layer, modifying the data layers stored in the structure; and overlaying the data layers stored in the structure to form a second composite image.

25. A method of processing data, comprising: receiving a data set comprising a data layer for processing; generating data layer metadata for the data layer; generating a rendering specification for the data layer; generating access control metadata for the data layer; and when a notification about the data layer is to be sent, sending the notification.

26. The method of claim 25, wherein the rendering specification is generated based on business rules.

27. The method of claim 25, wherein the data layer metadata is associated with user metadata for access control.

28. The method of claim 25, further comprising: sending the notification to client software in real time.

29. The method of claim 25, further comprising at least one of: performing address cleansing for the data layer; and geocoding the data layer.

30. A system of processing data, comprising: means for receiving a data set comprising a data layer for processing; means for generating data layer metadata for the data layer; means for generating a rendering specification for the data layer; means for generating access control metadata for the data layer; and means for when a notification about the data layer is to be sent, sending the notification.

31. An article of manufacture for processing data, wherein the article of manufacture is capable of causing operations, the operations comprising: receiving a data set comprising a data layer for processing; generating data layer metadata for the data layer; generating a rendering specification for the data layer; generating access control metadata for the data layer; and when a notification about the data layer is to be sent, sending the notification.

32. A method for access control, comprising: receiving a request to access a data set; locating a layer definition table entry associated with the data set; accessing a user table associated with the user from whom the request was received; and determining whether the data set may be accessed by the user based on accessing a resource access control list table.

33. The method of claim 32, further comprising: filtering the data set.

34. The method of claim 32, further comprising: rendering the data set using a rendering specification.

35. A system for access control, comprising: means for receiving a request to access a data set; means for locating a layer definition table entry associated with the data set; means for accessing a user table associated with the user from whom the request was received; and means for determining whether the data set may be accessed by the user based on accessing a resource access control list table.

36. An article of manufacture for access control, wherein the article of manufacture is capable of causing operations, the operations comprising: receiving a request to access a data set; locating a layer definition table entry associated with the data set; accessing a user table associated with the user from whom the request was received; and determining whether the data set may be accessed by the user based on accessing a resource access control list table.

37. A method for processing data, comprising: receiving a request for a data layer at a zoom scale, wherein the data layer has a layer identifier; matching the layer identifier in a layer definition table and a layer pyramid table; retrieving an entry from the layer pyramid table for data layer with the layer identifier; and determining whether the zoom scale is between a minimum and maximum zoom scales found in the retrieved entry from the layer pyramid table.

38. The method of claim 37, further comprising: if the zoom scale is not between the minimum and maximum zoom scales found in the retrieved entry from the layer pyramid table, attempting to retrieve another entry from the layer pyramid table for data layer with the layer identifier.

39. A system for processing data, comprising: means for receiving a request for a data layer at a zoom scale, wherein the data layer has a layer identifier; means for matching the layer identifier in a layer definition table and a layer pyramid table; means for retrieving an entry from the layer pyramid table for data layer with the layer identifier; and means for determining whether the zoom scale is between a minimum and maximum zoom scales found in the retrieved entry from the layer pyramid table.

40. An article of manufacture for processing data, wherein the article of manufacture is capable of causing operations, the operations comprising: receiving a request for a data layer at a zoom scale, wherein the data layer has a layer identifier; matching the layer identifier in a layer definition table and a layer pyramid table; retrieving an entry from the layer pyramid table for data layer with the layer identifier; and determining whether the zoom scale is between a minimum and maximum zoom scales found in the retrieved entry from the layer pyramid table.

41. A method for processing data, comprising: under control of a first system, preparing a handoff package; and sending the handoff package to a second system; and under control of a second system; processing data in the handoff package.

42. The method of claim 41, further comprising: under control of the second system, preparing a handback package; and sending the handback package to the first system.

43. The method of claim 41, further comprising: under control of the second system, sending at least one of updated data or status to a third system.

44. A system for processing data, comprising: under control of a first system, means for preparing a handoff package; and means for sending the handoff package to a second system; and under control of a second system; means for processing data in the handoff package.

45. An article of manufacture for processing data, wherein the article of manufacture is capable of causing operations, the operations comprising: under control of a first system, preparing a handoff package; and sending the handoff package to a second system; and under control of a second system; processing data in the handoff package.

46. A method for editing data, comprising: when existing editable data elements are selected for editing, retrieving information for the selected editable data elements; and performing edit commands on the selected editable data elements using the retrieved information.

47. The method of claim 46, further comprising: creating a new editable data element.

48. The method of claim 46, further comprising: performing edit commands on tabular data.

49. A system for editing data, comprising: means for, when existing editable data elements are selected for editing, retrieving information for the selected editable data elements; and means for performing edit commands on the selected editable data elements using the retrieved information.

50. An article of manufacture for editing data, wherein the article of manufacture is capable of causing operations, the operations comprising: when existing editable data elements are selected for editing, retrieving information for the selected editable data elements; and performing edit commands on the selected editable data elements using the retrieved information.

51. A method for sharing views of data, comprising: creating a project; associating access rights between users and the project; and when receiving a request to access the project, determining whether access is permitted based on the associated access rights.

52. The method of claim 51, wherein a project access control list table stores a list of projects and users granted access to each of the projects.

53. The method of claim 51, further comprising: allowing access to the project; and allowing modifications to the project based upon the access rights.

54. The method of claim 51, wherein the views of data comprise views of spatial and tabular data.

55. A system for sharing views of data, comprising: means for creating a project; means for associating access rights between users and the project; and means for, when receiving a request to access the project, determining whether access is permitted based on the associated access rights.

56. An article of manufacture for sharing views of data, wherein the article of manufacture is capable of causing operations, the operations comprising: creating a project; associating access rights between users and the project; and when receiving a request to access the project, determining whether access is permitted based on the associated access rights.

Description



CROSS-REFERENCE TO PROVISIONAL APPLICATION

[0001] This application is a non-provisional application that claims the benefit of following applications:

[0002] U.S. Provisional Application No. 60/364,807, entitled "A SYSTEM AND METHOD AND COMPUTER PRODUCT FOR COUPLING A DATA PROCESSING CENTER TO A LIVE DATA PROCESSING CENTER TO PROVIDE FOR SPATIALLY VIEWING, ANALYZING, AND SHARING ENTERPRISE DATA AND GEOSPATIAL DATA ACROSS MULTIPLE USERS," by T. von Kaenel et al., filed on Mar. 16, 2002, and which is incorporated by reference herein in its entirety.

[0003] U.S. Provisional Application No. 60/433,597, entitled "SYSTEMS AND METHODS FOR REAL-TIME EVALUATING AND REPORTING ASSOCIATED WITH INSURANCE POLICY UNDERWRITING AND RISK MANAGEMENT," by S. Kumar et al., filed on Dec. 16, 2002, and which is incorporated by reference herein in its entirety.

[0004] U.S. Provisional Application No. 60/437,990, entitled "SYSTEMS AND METHODS FOR REAL-TIME EVALUATING AND REPORTING ASSOCIATED WITH INSURANCE POLICY UNDERWRITING AND RISK MANAGEMENT," by S. Kumar et al., filed on Jan. 6, 2003, and which is incorporated by reference herein in its entirety.

BACKGROUND OF THE INVENTION

[0005] 1. Field of the Invention

[0006] The present invention is generally related to improved spatial systems and geospatial information systems. Spatial and geospatial information systems involve the use of spatial and/or geospatial information to explore, analyze, visualize, and communicate spatial relationships.

[0007] 2. Description of the Related Art

[0008] Businesses have a great deal of data. Some of the data is spatially referenced data (i.e., the data is associated with a point on the earth using a latitude and longitude), while much of the data is non-spatially referenced data (e.g., sales data that may be in a tabular format). Currently, there is no convenient way for users to spatially analyze non-spatially referenced data. Instead, data is analyzed by comparing tabular data from spreadsheets or data stores and creating pie charts or bar charts to represent tabular data graphically. With these limited options, it is difficult for users to determine the interaction of various data to a spatial perspective.

[0009] Spatial Information Management (SIM) enables business applications to use business data in a spatial context by assigning real earth coordinates (i.e., latitude and longitude) to the business data. Associating location information with business data allows SIM users to make more informed decisions quickly by visualizing spatially referenced business data on a map or by executing spatial queries which return results based on an intersection of proximity of various data sets. That is, SIM allows data to be represented in a spatial context and provides information in various formats (e.g., graphical, tabular, text, etc.) by combining various data elements, such as geographic information, demographic information, business information or psychographic information. The SIM industry is made up several areas, including, for example: Geographic Information Systems (GIS), Business Support Systems (BSS), Personal Productivity Applications, and the Internet.

[0010] Geographic Information Systems (GIS) are used to handle geographic information reliably. GISs are designed mainly for handling spatial data conversion, data analysis and cartographic display.

[0011] Business Support Systems (BSS) are designed mainly to support specific business processes. The following are a few examples of different types of Business Support Systems: Enterprise Resource Planning (ERP), data mining, Customer Relationship Management (CRM), and Supply Chain Management (SCM). ERP integrates departments and functions across a company onto a single computer system that can serve the particular needs of different departments. CRM is a comprehensive way to integrate customer information in areas of business. SCM provides a solution for companies to find the raw components needed to make a product or service, manufacture that product or service, and deliver the product or service to customers. These applications are not, however, designed to support business data in spatial form. Yet, users would be more informed if these applications were enabled to analyze business data spatially using geocoded business records that have information.

[0012] Personal Productivity Applications are tools that help improve users' productivity in their daily jobs. Spatially referenced data can also help users manage their daily tasks.

[0013] The Internet is a worldwide system of computer networks that allows computers connected to the computer networks to access information from other computers. As the Internet replaces the client server architecture for managing data access, more Internet products are becoming available to support spatially referenced data (e.g., MapQuest.RTM., Autodesk MapGuide.TM., etc.). Examples of the use of spatially referenced data include obtaining driving directions to a nearest coffee shop or finding all gas stations within ten miles of a specific location.

[0014] Currently, SIM users are able to access static, pre-spatially referenced data sets that have been stored on very large storage devices. A data set is a subset of related data. Whenever a user requests certain information using existing conventional software, a user has access only to static data that has been previously stored and referenced (i.e., raster imagery, such as LanSat, DOQQs, DRGs, etc. or vector data such as roads, lakes, landmarks, etc). The term "raster data" refers to one or more pre-generated images. The term "vector data" refers to a set of coordinate numbers that are converted to an image.

[0015] It is difficult for users simultaneously to view spatially referenced data and non-spatially referenced data, such as customer information, sales results, and inventory levels. In order to do this, it is necessary for the non-spatially referenced data and spatially referenced data to be accessed in real time from wherever the data exists in an enterprise (i.e., an organization that uses computers), and the information must be spatially referenced or geocoded by associating a longitude and latitude value with each data record to be viewed spatially.

[0016] For example, if a salesperson wants to make informed decisions by visualizing how certain marketing promotions are working out, the sales person needs to be able to view the sales data overlaid with other geospatial information, e.g., maps, county boundaries, competitor locations, etc. Then, a salesperson needs to be able to select certain areas on the map to determine why some areas are providing poor results based on the specific marketing promotions which have been used in the specific areas. To accomplish this, a salesperson must have the ability to simultaneously access enterprise data (i.e., data generated by an enterprise, which may also be referred to as "corporate data" or "enterprise data", such as sales data, marketing data, employee data, etc.) and third party data (i.e., data generated outside of the enterprise accessing the data, such as, public data, data retrieved from third party sources such as the U.S. Postal Service or Dunn & Bradstreet, etc.) that provide demographic information about the selected area. Since there are so many different possible results that can be generated based on user requests, it is very difficult to anticipate all of the possible results, and preload and pre-reference static data (e.g., images) that represent all of the possible results.

[0017] Thus, there are numerous problems in the existing spatial systems solutions. One problem is dynamically accessing data sets and generating spatial references (i.e., geocoding) for enterprise data sets that are typically not spatially-referenced (e.g., sales results, customer information, inventory levels, plant or asset locations, etc.). Another problem is simultaneously combining enterprise data with third party data (e.g., geographical data) to allow enterprises to spatially analyze and visualize enterprise data and other data (e.g., traditional spatially referenced data sets in a spatial context).

[0018] Yet another problem is illustrated with reference to FIGS. 1-2. Referring to FIG. 1, a client application sends a request 101 via a network 102 to a server computer 103. The server computer 103 retrieves the requested data from a data store 104 and generates individual images for each data layer 105. The individual images are spatially referenced images (e.g., an image in which each point is associated with a longitude and latitude). The server computer 103 obtains data from the data store 104. The server computer 103 combines the individual image layers 106
into one single composite image 107. The composite image 107 is then sent via a network to the client application 101 to be displayed.

[0019] Since the server computer needs to combine the images into one composite image, and then send the composite image to the client, several problems occur. For example, when a user wants to view the composite image with some changes (e.g., view a new data layer, view one less data layer, or change the order of the layers), the server computer 103
regenerates individual images for each data layer to be viewed and sends a new composite image to the client application. This adds additional processing load on the server computer and requires many roundtrip transactions between the client application 101 and the server computer 103. Additionally, the response time becomes slow when the user wants to view a new data layer (in addition to the ones currently being viewed or accessed) or when the user wants to view one less data layer, since each type of request results in new roundtrip requests to the server computer 103 to generate a new composite image.

[0020] Referring to FIG. 2, a client application 201 sends a request via a network 202 to a server computer 203. The server computer 203 retrieves the requested data from a data store 204. The raw data for each data layer is retrieved as individual data sets 205 and sent via network 202
to a complex client application 201. The client application 201 stores each data set in data store 208. The client application 201 will render and convert 209 individual sets of raw data to displayable images 210. Then the client application 201 will combine the displayable images into one composite image 211 and finally display the composite image 211 to the user.

[0021] Several problems occur with the technique illustrated in FIG. 2. For example, the technique requires a complex client software application 201 to contain the logic to convert and, possibly, combine raw spatially referenced data into viewable data layers. Additionally, raw data, rather than images, are sent to the client application 201, which results in data being copied to and stored on client computers, rather than being centralized in a single data store.

[0022] Yet another problem is that Geographic Information Systems (GIS) require data to be in a very specific format that allows client applications to process and allows users to view the data spatially. Due to this need, the process of generating and linking spatial coordinate data often requires the conversion of the format of the initial data set to a new spatially referenced format. The processing for conversion of the format is typically performed manually, which is time consuming and error prone. The conventional process for converting data so that the data may be viewed spatially cannot be easily automated because of the manual processing required. The manual processes also make it very difficult to track the chain of custody for the data. This is a problem in a server computer that handles data from different customers. The manual processes also make it difficult to generate data validation procedures that can guarantee the integrity of the data across all the processes.

[0023] FIG. 3 illustrates a conventional process for converting data. For example, customer data 312 is tabular data. The customer data 312 is uploaded in block 320. To make the tabular data viewable spatially, location information (e.g., addresses) that is associated with the customer data 312 is cleansed in block 340 using conventional cleansing techniques known in the art. Cleansing of location information refers to determining that the location information is valid and accurate by, for example, comparing the location information to data in a data store available from the U.S. Postal Service or Dunn and Bradstreet (which maintains information on businesses). Also in block 340, a set of spatial coordinates are generated from the cleansed location information, and this is often done using a conventional geocoding application that generates a set of spatial coordinates (e.g., latitude and longitude) for each data element (e.g., customer record) in this example. The result of geocoding is spatial coordinate data 370, which is stored in spatial data store 360.

[0024] Next, a new data set is created by merging the customer data 312
with the spatial coordinate data 370. This data then needs to be uploaded back to the server computer 320 from the spatial data store 360. Then, rendering specification data is generated, which describes how the data should be presented as a spatial layer, and the hardcoded table is displayed in block 380.

[0025] The resulting transformed data is typically no longer usable by existing applications. A common solution to this problem is to keep the original data intact and create a new data set to be loaded and viewed spatially, which includes the original data concatenated with the spatial coordinate data. This causes data integrity problems with the original data getting out of synch with the data created for spatial viewing.

[0026] Moreover, the resulting data cannot be made visible to the client applications without restarting the client and server processes. Conventional systems use configuration files at startup time to read information about the data presented to the client applications. The server applications or server processes are shut down, configuration files are updated, and the server applications or server processes are restarted in order to provide access to new or modified data to client applications. This process logs out the client applications, and the client server session may need to be restarted before the new or modified data can be accessed and displayed.

[0027] A further problem is that conventional systems provide access control to data with one of two approaches. First, access control is done at the application level. In other words, a user is granted or denied access to the application based on the user's credentials. Once the user is granted access to the application, the user may view all data the application can access. Therefore, all users who use the application may view all the data at the server computer. Second, access to data is controlled by access control mechanisms provided by back end data store technology. This requires the application to access the back end data store with the same credentials used to access the application itself. Both approaches have several problems.

[0028] With the first approach, all users of an application get to view all data that the application can access, and access is not restricted to a subset of the data based on the user of the application. If different users need to be granted access to different sets or groupings of data, multiple instances of the application or multiple processes within the same application need to be run, each working with a different set or grouping of data. Also, users view all data within a data set, and access is not restricted to some records or data elements within a data set based on attributes associated with the user (e.g., security clearance level). Take for example a data set that contains the customer data for a company. The data set contains customer data for the entire country. Conventional spatial systems do not restrict access of users that are part of the west coast sales team to only the customer data for the west coast. A completely new data set that contains only the west coast customer information would have to be created in conventional systems for access to be limited. Moreover, it is very difficult to customize the presentation of data to the user based on access information associated with the user.

[0029] With the second approach, the credentials of the users of the application are tied directly to the credentials used to access the back end data store. This creates a very cumbersome process of user access right management within the application and from the perspective of the personnel setting up access rights to the server computer. Moreover, the application gets tied into the back end data store technology used, and it is extremely difficult to replace back end data store technology with a new technology as it becomes available. Also, application code gets extremely complex when multiple data stores with different access requirements are used.

[0030] Further problems occur in conventional systems when displaying images from pyramided data. A set of related spatially referenced data is commonly referred to as a data layer. A typical image, seen by a user in client software, will consist of spatially referenced images, each of which is a data layer, overlaid on top of one another utilizing spatial queries of spatial coordinates (e.g., latitude and longitude).

[0031] When a user changes the viewing area of a data layer displayed by client software by zooming in or out, various amounts of data need to be retrieved from the server computer to display the spatially referenced data to the user. When the user zooms out, more data needs to be retrieved from the server computer, since the area being viewed is larger. As the user zooms out, since the actual display area on the client software display device is fixed, more and more data is retrieved from the server computer to produce an image having more detail. This leads to the server computer taking progressively longer times to generate a composite spatially referenced image as the user zooms out. Conventional systems use "pyramiding" to handle such zooming.

[0032] Pyramiding is a technique in which the data for a data layer is stored in more than one data set. All the data sets contain data for the same subject matter in the same geographical area of interest (i.e., subsets of data based on a particular area being viewed), but the level of detail varies from one data set to another. These data sets can be arranged in a pyramid, such that the data sets at the top of the pyramid have the data with the least amount of detail. Data in the data sets at the lower levels in the pyramid have progressively higher level of detail, with the data set at the lowest level in the pyramid containing the most detailed data.

[0033] For the same geographical area of interest, each data set at a higher level in the pyramid contains less data than the data set at the pyramid level immediately below. Therefore, it takes less time to convert the data to a spatially referenced image at a higher level in the pyramid than at the pyramid level below. As the user zooms out, if the spatially referenced image is generated from data sets at progressively higher levels in the pyramid, the time taken by the server computer to create the spatially referenced image should not increase as a user zooms out.

[0034] The typical pyramid consist of several levels with the data set at each level being used for a fixed range of zoom scales, with a predefined minimum zoom scale and a predefined maximum zoom scale. When the user zooms out beyond the maximum zoom scale, the data set from the next higher level in the pyramid will be used to generate the spatially referenced image. When the user zooms in below the minimum zoom scale for a pyramid level, the data set from the pyramid level at the next lower level in the pyramid is used to generate the spatially referenced image. The data for each level in the pyramid will be stored as separate data sets.

[0035] FIG. 4 illustrates a pyramid 410 for roads data. If the roads data of a pyramid (e.g., pyramid 410) is stored in data store tables, there would be five data tables in the data store, each containing data for one level in the pyramid 410. FIG. 5 illustrates conventional processing when data is pyramided. Each level of the pyramid 410 is stored as a table 550
at GIS system 530. Each table is a data set, and each data set stored in the data store is represented as one data layer in a user interface (UI) screen presented to a user. For example, the pyramid depicted in FIG. 4
is presented as five data layers to the user in FIG. 5. So instead of seeing the related data in the different levels of a pyramid as one data layer, the user sees five different data layers.

[0036] Conventional systems use special client computer or server computer logic to make a data layer available for viewing based on the zoom scale the user is using. Since at any given time the user will be at only one zoom scale, only one out of the five layers in the pyramid will be available for viewing. Via client software 510, a user selects multiple layers and a zoom scale (block 512), and the selection is sent to the server computer 520 via a network. A data store is accessed, image layers are generated, and a consolidated image is returned to the client software 510 (block 532).

[0037] The one-to-one relationship between data sets and their corresponding data layer representation by the client software creates several problems. For example, unnecessary information about how data is stored on the back end data store is exposed to the client software. That is, data is seen as multiple data layers matching the different data sets stored in the data storage device for the same set of spatial data (e.g., roads). Therefore, in a typical application, a user can be presented with an overwhelming number of data layers, many of which are duplicate data layers for the same set of data at different zoom scales.

[0038] Since the user is allowed to view only one individual data layer at a time in a pyramid based on the user's zoom scale, as the user zooms in or out, the data layer the user is currently viewing may suddenly become unavailable for viewing. The user then has to manually choose to view the next data layer in the pyramid to view data. That is, the switchover from one level in the pyramid to the next is not always transparent.

[0039] Some conventional systems that store raster data, store the data as a pyramid to speed up the retrieval of the raster data. These conventional systems, however, do not store any other form of spatially referenced data, such as vector data.

[0040] A further problem involves third party systems. A third party system is one that is outside of a spatial system. If an organization wishes to apply custom business logic and validations to the manipulation and viewing of spatially enabled information, many steps are necessary and the process is expensive. Some examples of business logic include, for example, when editing a spatial layer, it may be necessary, that prior to saving the edit, to verify that the areas of plots of land must be smaller than a certain size, a minimum distance from a river, contained within other plots, etc. Validations may include basic editable data element (e.g., graphical object, tabular data, etc.) validations (e.g.,validations that make sure only well formed graphical objects are created). Other validations may include the rules about the relationships between various graphical objects or data layers. Often, several different software packages are purchased, installed, and configured to get spatial capability. Additionally, custom software is written and maintained. Then, various base or background layer information is purchased, configured, and maintained. Moreover, access control, storage, and distribution problems must also be solved. Often in-house expertise must be developed in order to configure and maintain these systems.

[0041] Another problem in conventional Geographic Information Systems (GIS) is the difficulty in editing images. In particular, a composite image viewed by a user consists of images from multiple data layers overlaid on top of one another. The spatial data may be in a raster data or vector data format. Raster data refers to pre-generated images that may need to be cropped to fit the viewing area desired by the user. Vector data is a set of coordinate numbers that are converted to an image.

[0042] Conventional editors are typically on dedicated desktop applications because of the processing power, user interface, and data storage needed for editing. In some conventional systems, editing requests are sent from the client computer to the server computer, the server computer performs the editing, and the server computer returns a composite image to the client computer. There are several problems with trying to implement an effective editor in client software. For example, it is difficult to separate a data layer to be edited from all of the other data layers forming the displayed composite image. It is difficult to gather needed information about the elements in the data layer to be edited and to transfer this information from the server computer to the client software quickly. Also, there is typically a slow response during editing because interactions with users are transmitted back to the server computer for processing. Moreover, the typical user interface is cumbersome. There is difficulty in matching complicated graphical object boundaries to avoid overlaps or exclusion areas by use of "snap to" functions, which match new vertices to existing vertices. Furthermore, it is difficult to copy portions of graphical objects from various data layers to assist with building or modifying graphical objects. Conventional editors also lack the ability to tailor the user interface.

[0043] A further problem in a conventional Geographic Information Systems (GIS), involves sharing of customized views of data layers among different users. Some conventional GIS systems may provide the users the ability customize a view of data (i.e., a "data view"). Customizing the data view includes actions such as turning on or off a layer, reordering data layers and highlighting layer objects within a data layer by selecting the objects with a selection tool. Users may also add annotations to the view by drawing on the image viewing area using an annotation tool. These functions are preformed by the client application at the client computer and the results of such customizations are not saved on the server computer.

[0044] Conventional systems provide two types of functionality for saving customized views of data. In terms of a first type of functionality, some GIS systems provide the ability to save only a limited subset of customizations, such as annotations, in a specific user area on the server system, but they do not provide a means to share these customized views with other users of the server computer. In terms of a second type of functionality, other GIS systems allow a limited set of customizations to be shared with other users, but they do not provide the ability to limit access to a subset of the users of the server computer.

[0045] Additionally, the first type of functionality provides access limited to only the editor/author of the customized view of the data (i.e., the project) and no other user. These GIS systems do not have the ability to save all customization done by the user as a project, then share this project with other users, to properly discuss and possibly enable the other users to provide their inputs, comments, and modifications to the project on-line. That is, the first type of functionality lacks on-line collaboration of a project within a GIS system.

[0046] On the other hand, the second type of functionality provides access to all users of the system of the newly customized data (i.e., the project). Such open access creates the problem that the project will not be confidential and all users of the system will be able to view and further modify the project on-line. This functionality creates lack of on-line confidentiality, security, and integrity of a project within a GIS system.

[0047] Regardless of the many benefits of using geographic information to make business decisions, it is very costly for companies to build spatial information system infrastructure and to maintain the infrastructure properly. Also, current techniques for acquiring and manipulating spatial data are cumbersome and very time consuming. Furthermore, as noted above, there are no easy techniques for integrating enterprise data that is not spatially referenced with geographic information data to fully maximize the spatial capabilities of geographic information data.

[0048] To fully support data access for geographic information in a cost effective way, there is a need for a solution for standardizing data, integrating different business rules to support the integration of enterprise data and geographic information data for spatial representation. Also there is a need for a web-based architecture that is secure and easily scalable to support multiple users who need to access the geographic information, as well as, to share and collaborate using the geographic information with other users.

SUMMARY OF THE INVENTION

[0049] Provided are a method, system, and program for providing access to spatial data. A request for data is received. Enterprise and third party data are integrated. The integrated data is processed. Spatially referenced results are generated using the processed data. The spatially referenced results are returned in response to the request.

[0050] The described implementations of the invention provide a method, system, and program to support data access for spatially referenced and non-spatially referenced data. Solutions are provided for standardizing data and integrating different business rules to support the integration of both enterprise data and third party data for spatial representation. Moreover, a secure, scalable, web-based architecture is provided that allows enterprise and third party data to be viewed, analyzed, and shared.

BRIEF DESCRIPTION OF THE DRAWINGS

[0051] Referring now to the drawings in which like reference numbers represent corresponding parts throughout:

[0052] FIGS. 1-5 illustrate various problems in the prior art.

[0053] FIG. 6 illustrates the use of spatially referenced data in accordance with certain implementations of the invention.

[0054] FIG. 7 illustrates, in a block diagram, workflow through a computing environment in accordance with certain implementations of the invention.

[0055] FIG. 8 illustrates services in accordance with certain implementations of the invention.

[0056] FIGS. 9A-9E illustrate various computer system architectures in accordance with certain implementations of the invention.

[0057] FIG. 10 illustrates a software architecture of a server system in accordance with certain implementations of the invention.

[0058] FIGS. 11A and 11B illustrate software and Web services architectures in accordance with certain implementations of the invention.

[0059] FIG. 12 illustrates processing for integrating third party data and enterprise data in accordance with certain implementations of the invention.

[0060] FIG. 13 illustrates multiple data layering in accordance with certain implementations of the invention.

[0061] FIG. 14 illustrates logic for multiple data layering in accordance with certain implementations of the invention.

[0062] FIG. 15 illustrates a distributed computing environment in accordance with certain implementations of the invention.

[0063] FIGS. 16A-16B illustrate data preparation in accordance with certain implementations of the invention.

[0064] FIG. 17 illustrates logic for data preparation and activation in accordance with certain implementations of the invention.

[0065] FIG. 18 illustrates metadata stored in metadata store for use in controlling access to data in accordance with certain implementations of the invention.

[0066] FIG. 19 illustrates logic when a client request to view information as data arrives at the server system in accordance with certain implementations of the invention.

[0067] FIG. 20 illustrates a user hierarchy in accordance with certain implementations of the invention.

[0068] FIG. 21 illustrates a single data layer presentation that is provided for a single pyramided spatially referenced data set in accordance with certain implementations of the invention.

[0069] FIG. 22 illustrates a metadata store, a spatial data store, a business data store, and relationships among the data stores in accordance with certain implementations of the invention.

[0070] FIG. 23 illustrates logic for processing a client request to view data in accordance with certain implementations of the invention.

[0071] FIG. 24 illustrates logic for the interaction of metadata tables to identify the information to be sent in response from a request for a data layer.

[0072] FIG. 25 illustrates logic for printing multiple data layers in accordance with certain implementations of the invention.

[0073] FIG. 26 illustrates logic for order fulfillment in accordance with certain implementations of the invention.

[0074] FIG. 27 illustrates logic for e-commerce processing in accordance with certain implementations of the invention.

[0075] FIG. 28 illustrates an enterprise spatial system interfacing with a third party system in accordance with certain implementations of the invention.

[0076] FIG. 29 illustrates an editing example in accordance with certain implementations of the invention.

[0077] FIGS. 30A-30C illustrate editing in accordance with certain implementations of the invention.

[0078] FIGS. 31A-31B illustrate logic for editing in accordance with certain implementations of the invention.

[0079] FIGS. 32 and 32 illustrate examples of collaboration in accordance with certain implementations of the invention.

[0080] FIG. 34 illustrates metadata tables in a metadata store that are used to enable collaboration in accordance with certain implementations of the invention.

[0081] FIG. 35 illustrates logic for enabling collaboration in accordance with certain implementations of the invention.

[0082] FIGS. 36 and 37 illustrate logic for collaboration in accordance with certain implementations of the invention.

[0083] FIG. 38 illustrates a UI screen provided by the enterprise spatial system for online knowledge mapping in accordance with certain implementations of the invention.

[0084] FIG. 39 illustrates in a UI screen constraints in workspace in accordance with certain implementations of the invention.

[0085] FIGS. 40A-40E illustrate UI screens in accordance with certain implementations of the invention.

[0086] FIG. 41 illustrates a section title in accordance with certain implementations of the invention.

[0087] FIG. 42 illustrates a control prompt in accordance with certain implementations of the invention.

[0088] FIG. 43 illustrates an Edit box and a Drop Down list box in accordance with certain implementations of the invention

[0089] FIG. 44 illustrates Radio button controls and Check Box controls in accordance with certain implementations of the invention.

[0090] FIG. 45 illustrates a sample Grid Display in accordance with certain implementations of the invention.

[0091] FIG. 46 illustrates a table display in accordance with certain implementations of the invention.

[0092] FIG. 47 illustrates a control frame in accordance with certain implementations of the invention.

[0093] FIG. 48 illustrates command buttons in accordance with certain implementations of the invention.

[0094] FIG. 49 illustrates hyperlinks in accordance with certain implementations of the invention.

[0095] FIG. 50 illustrates a pop up dialog box in accordance with certain implementations of the invention.

[0096] FIG. 51 illustrates a small pop up dialog box in accordance with certain implementations of the invention.

[0097] FIG. 52 illustrates a large pop up dialog box in accordance with certain implementations of the invention.

[0098] FIG. 53 illustrates a color picker in accordance with certain implementations of the invention.

[0099] FIG. 54 illustrates a Message UI screen in accordance with certain implementations of the invention.

[0100] FIG. 55 illustrates a UI screen before an error has occurred in accordance with certain implementations of the invention.

[0101] FIG. 56 illustrates UI screen in accordance with certain implementations of the invention.

[0102] FIG. 57 illustrates a pop up error message in accordance with certain implementations of the invention.

[0103] FIG. 58 illustrates logic for the registration process for transaction-based users in accordance with certain implementations of the invention.

[0104] FIG. 59 illustrates common registration wizard elements in accordance with certain implementations of the invention.

[0105] FIG. 60 illustrates a registration UI screen requesting user login information in accordance with certain implementations of the invention.

[0106] FIGS. 61 and 62 illustrate cancel registration and cancellation confirmation UI screens, respectively, in accordance with certain implementations of the invention.

[0107] FIG. 63 illustrates logic for login in accordance with certain implementations of the invention.

[0108] FIG. 64 illustrates common login UI screen elements in accordance with certain implementations of the invention.

[0109] FIG. 65 illustrates a main login UI screen in accordance with certain implementations of the invention.

[0110] FIG. 66 illustrates a login UI screen in accordance with certain implementations of the invention.

[0111] FIG. 67 illustrates a shared secret UI screen in accordance with certain implementations of the invention.

[0112] FIG. 68 illustrates a change password UI screen in accordance with certain implementations of the invention.

[0113] FIG. 69 illustrates conceptual logic for the main UI screen in accordance with certain implementations of the invention

[0114] FIG. 70 illustrates sample portal content in accordance with certain implementations of the invention.

[0115] FIG. 71 illustrates a main UI screen in accordance with certain implementations of the invention.

[0116] FIGS. 72A-72K illustrate details of a find location portion of the UI screen in accordance with certain implementations of the invention.

[0117] FIG. 73 illustrates an Ambiguous Location pop up dialog box 7310
without a scroll bar in accordance with certain implementations of the invention.

[0118] FIG. 74 illustrates an Ambiguous Location pop up dialog box with a scroll bar in accordance with certain implementations of the invention.

[0119] FIG. 75 illustrates a Base Image Conflict pop up dialog box in accordance with certain implementations of the invention.

[0120] FIG. 76 illustrates an Open AOI File dialog box in accordance with certain implementations of the invention.

[0121] FIG. 77 illustrates a Select Base Image portion of the main UI screen in accordance with certain implementations of the invention.

[0122] FIG. 78 illustrates a Data Layers UI screen in accordance with certain implementations of the invention.

[0123] FIG. 79 illustrates custom tab navigation control in accordance with certain implementations of the invention.

[0124] FIG. 80 illustrates a UI screen after the Show all categories tab has been selected in accordance with certain implementations of the invention.

[0125] FIG. 81 illustrates a symbol picker UI screen in accordance with certain implementations of the invention.

[0126] FIGS. 82A-82C illustrate line Color Picker pop dialog boxes in accordance with certain implementations of the invention.

[0127] FIG. 83 illustrates a Change Data Layer Order pop dialog box in accordance with certain implementations of the invention.

[0128] FIG. 84 illustrates an Edit Favorites pop up dialog box in accordance with certain implementations of the invention.

[0129] FIG. 85 illustrates a Change Detection pop up dialog box in accordance with certain implementations of the invention.

[0130] FIG. 86 illustrates a Mapping and Analysis portion of the main UI screen in accordance with certain implementations of the invention.

[0131] FIG. 87 illustrates a Map window in accordance with certain implementations of the invention.

[0132] FIG. 88 illustrates a map frame in accordance with certain implementations of the invention.

[0133] FIG. 89 illustrates a docking bar in accordance with certain implementations of the invention.

[0134] FIG. 90 illustrates a docking bar with a toolbar, attributes bar, and prompt bar in accordance with certain implementations of the invention.

[0135] FIG. 91 illustrates expansion docking in accordance with certain implementations of the invention.

[0136] FIGS. 92A-92O illustrate a toolbar, states of an icon, and various tools in accordance with certain implementations of the invention.

[0137] FIG. 93 illustrates an example of measure tool use in UI screen 9310 in accordance with certain implementations of the invention.

[0138] FIGS. 94A-94R illustrate various tools in accordance with certain implementations of the invention.

[0139] FIGS. 95A-95F illustrate toolbars in accordance with certain implementations of the invention.

[0140] FIG. 96 illustrates a table in which tools described herein may be grouped in accordance with certain implementations of the invention.

[0141] FIGS. 97A-97D illustrate attribute bars in accordance with certain implementations of the invention.

[0142] FIGS. 98A-98B illustrates Point n' View pop up dialog boxes in accordance with certain implementations of the invention.

[0143] FIG. 99 illustrates a Change Drawing Object Order pop up dialog box in accordance with certain implementations of the invention.

[0144] FIG. 100 illustrates a Point n' Attribute pop up dialog box in accordance with certain implementations of the invention.

[0145] FIG. 101 illustrates a push pin in accordance with certain implementations of the invention.

[0146] FIG. 102 illustrates a Setup Point n' Attribute pop up dialog box in accordance with certain implementations of the invention.

[0147] FIG. 103 illustrates a Buffering pop up dialog box in accordance with certain implementations of the invention.

[0148] FIG. 104 illustrates a Boolean Query pop up dialog box in accordance with certain implementations of the invention.

[0149] FIG. 105 illustrates a reference map in accordance with certain implementations of the invention.

[0150] FIG. 106 illustrates a Map Summary window in accordance with certain implementations of the invention.

[0151] FIG. 107 illustrates an Analysis Summary window in accordance with certain implementations of the invention.

[0152] FIG. 108 illustrates Command buttons in accordance with certain implementations of the invention.

[0153] FIG. 109 illustrates scaling the main UI screen to a different resolution UI screen in accordance with certain implementations of the invention.

[0154] FIG. 110 illustrates table that identifies the size of the Map window at some resolutions in accordance with certain implementations of the invention.

[0155] FIG. 111 illustrates logic for creating a map in accordance with certain implementations of the invention.

[0156] FIG. 112 illustrates a map layout window in accordance with certain implementations of the invention.

[0157] FIG. 113 illustrates a Map Preview UI screen in accordance with certain implementations of the invention.

[0158] FIG. 114 illustrates an example of a download dialog box in accordance with certain implementations of the invention.

[0159] FIG. 115 illustrates a save file UI screen in accordance with certain implementations of the invention.

[0160] FIG. 116 illustrates logic for purchasing data in accordance with certain implementations of the invention.

[0161] FIG. 117 illustrates a first data buy UI screen in accordance with certain implementations of the invention.

[0162] FIG. 118 illustrates an example imagery pop up dialog box in accordance with certain implementations of the invention.

[0163] FIG. 119 illustrates a second data buy UI screen providing data options in accordance with certain implementations of the invention.

[0164] FIG. 120 illustrates a third data buy UI screen with a purchase summary in accordance with certain implementations of the invention.

[0165] FIG. 121 illustrates a change shipping information pop up dialog box in accordance with certain implementations of the invention.

[0166] FIG. 122 illustrates a change billing information pop up dialog box in accordance with certain implementations of the invention.

[0167] FIG. 123 illustrates a Full Report pop up dialog in accordance with certain implementations of the invention.

[0168] FIG. 124 illustrates a download dialog box in accordance with certain implementations of the invention.

[0169] FIG. 125 illustrates a Full Report pop up dialog box with Boolean query in accordance with certain implementations of the invention.

[0170] FIG. 126 illustrates highlighting in a Full Report pop up dialog box with Boolean query in accordance with certain implementations of the invention.

[0171] FIG. 127 illustrates a file menu in accordance with certain implementations of the invention.

[0172] FIG. 128 illustrates processing for a New operation in accordance with certain implementations of the invention.

[0173] FIG. 129 illustrates a New Project UI screen in accordance with certain implementations of the invention.

[0174] FIG. 130 illustrates a Select Template UI screen in accordance with certain implementations of the invention.

[0175] FIG. 131 illustrates processing for an Open operation in accordance with certain implementations of the invention.

[0176] FIG. 132 illustrates an Open Project UI screen in accordance with certain implementations of the invention.

[0177] FIG. 133 illustrates logic for processing a Save operation in accordance with certain implementations of the invention.

[0178] FIG. 134 illustrates a Save Project UI screen in accordance with certain implementations of the invention.

[0179] FIG. 135 illustrates an Email Form UI screen in accordance with certain implementations of the invention.

[0180] FIG. 136 illustrates logic for supporting transactional customers in accordance with certain implementations of the invention.

[0181] FIG. 137 illustrates a main UI screen for supporting transactional customers in accordance with certain implementations of the invention.

[0182] FIG. 138 illustrates a first Shopping UI screen with an Order Summary in accordance with certain implementations of the invention.

[0183] FIG. 139 illustrates a second Shopping UI screen with Contact Information in accordance with certain implementations of the invention.

[0184] FIG. 140 illustrates a third Shopping UI screen with Payment Information in accordance with certain implementations of the invention.

[0185] FIG. 141 illustrates a fourth Shopping UI screen with Purchase Summary in accordance with certain implementations of the invention.

[0186] FIG. 142 illustrates a fifth Shopping UI screen with Acknowledgment in accordance with certain implementations of the invention.

[0187] FIG. 143 illustrates logic for entering the shopping cart from the create map functionality in accordance with certain implementations of the invention.

[0188] FIG. 144 illustrates a first Map Shopping UI screen with Order Summary in accordance with certain implementations of the invention.

[0189] FIG. 145 illustrates a second Map Shopping UI screen with Purchase Summary in accordance with certain implementations of the invention.

[0190] FIG. 146 illustrates logic for entering the shopping cart by selecting analysis form the main UI screen in accordance with certain implementations of the invention.

[0191] FIG. 147 illustrates logic for shopping cart functionality when the user enters the shopping cart from the data purchase UI screens in accordance with certain implementations of the invention.

[0192] FIG. 148 illustrates a download dialog box in accordance with certain implementations of the invention.

[0193] FIG. 149 illustrates a Zoom layer pop up dialog box in accordance with certain implementations of the invention.

[0194] FIG. 150 illustrates selection of the Preferences menu in accordance with certain implementations of the invention.

[0195] FIG. 151 illustrates logic for processing a logoff in accordance with certain implementations of the invention.

[0196] FIG. 152 illustrates common Logoff UI screen elements in accordance with certain implementations of the invention.

[0197] FIG. 153 illustrates a first Logoff UI screen in accordance with certain implementations of the invention.

[0198] FIG. 154 illustrates a Logoff Confirmation UI screen in accordance with certain implementations of the invention.

[0199] FIG. 155 illustrates navigation using the Back button and using the continue button in accordance with certain implementations of the invention.

[0200] FIG. 156 illustrates processing when there is a dropped connection in accordance with certain implementations of the invention.

[0201] FIG. 157 illustrates a structure that shows variables that are involved in the pricing structure in accordance with certain implementations of the invention.

[0202] FIG. 158 illustrates co-branding for a welcome UI screen in accordance with certain implementations of the invention.

[0203] FIG. 159 illustrates an example of a co-branded version of the main UI screen in accordance with certain implementations of the invention.

[0204] FIGS. 160 and 161 illustrate examples of a pop up dialog box and of a co-branded version of a secondary UI screen in accordance with certain implementations of the invention.

[0205] FIG. 162 illustrates a table of valid US state codes in accordance with certain implementations of the invention.

[0206] FIG. 163 illustrates a table of information to display in the Ambiguous Address pop up dialog box in accordance with certain implementations of the invention.

[0207] FIG. 164 illustrates a table of map layers of scale dependency in accordance with certain implementations of the invention.

[0208] FIG. 165 illustrates a table of some raster and vector data to be used in the enterprise spatial system software in accordance with certain implementations of the invention.

[0209] FIGS. 166A-166B illustrate another table of some raster and vector data to be used in the enterprise spatial system software in accordance with certain implementations of the invention.

[0210] FIG. 167 illustrates the business process and data flow supported by the enterprise spatial system service and operational facilities in accordance with certain implementations of the invention.

[0211] FIG. 168 illustrates Web Services in accordance with certain implementations of the invention.

[0212] FIG. 169 illustrates an application services overview in accordance with certain implementations of the invention.

[0213] FIG. 170 illustrates content services in accordance with certain implementations of the invention.

[0214] FIG. 171 illustrates e-commerce services in accordance with certain implementations of the invention.

[0215] FIG. 172 illustrates data services in accordance with certain implementations of the invention.

[0216] FIG. 173 illustrates a spatial datamart in accordance certain implementations of the invention.

[0217] FIG. 174 illustrates maintenance services in accordance with certain implementations of the invention.

[0218] FIG. 175 illustrates operational dataflow for a Web Center in accordance with certain implementations of the invention.

[0219] FIG. 176 illustrates a deployment process workflow in accordance with certain implementations of the invention.

[0220] FIG. 177 illustrates data flow in accordance with certain implementations of the invention.

[0221] FIG. 178 illustrates an ADS40 center architecture in accordance with certain implementations of the invention.

[0222] FIG. 179 illustrates a GIS processing center in accordance with certain implementations of the invention.

[0223] FIG. 180 illustrates a GIS processing component architecture in accordance with certain implementations of the invention.

[0224] FIG. 181 illustrates a GIS processing network in accordance with certain implementations of the invention.

[0225] FIG. 182 illustrates an Operations Center in accordance with certain implementations of the invention.

[0226] FIG. 183 illustrates GIS storage components in accordance with certain implementations of the invention.

[0227] FIG. 184 illustrates development components in accordance with certain implementations of the invention.

[0228] FIG. 185 illustrates an Operations Center network in accordance with certain implementations of the invention.

[0229] FIG. 186 illustrates a Staging Cluster architecture in accordance with certain implementations of the invention.

[0230] FIG. 187 illustrates a Web Center Functional Architecture in accordance with certain implementations of the invention.

[0231] FIG. 188 illustrates an alternative architecture in accordance with certain implementations of the invention.

[0232] FIG. 189 illustrates a Web Center Component Architecture in accordance with certain implementations of the invention.

[0233] FIG. 190 illustrates a servlet architecture in accordance with certain implementations of the invention.

[0234] FIG. 191 illustrates a Client EJB Architecture in accordance with certain implementations of the invention.

[0235] FIG. 192 illustrates Health & Welfare Components in accordance with certain implementations of the invention.

[0236] FIG. 193 illustrates a GIS Data Loader in accordance with certain implementations of the invention.

[0237] FIG. 194 illustrates a Data Archiver in accordance with certain implementations of the invention.

[0238] FIG. 195 illustrates an architecture for the hardware, software and network architecture for an enterprise spatial system web deployment in accordance with certain implementations of the invention.

[0239] FIG. 196 illustrates a Client Interface Architecture in accordance with certain implementations of the invention.

[0240] FIG. 197 illustrates a Thin Client Architecture in accordance with certain implementations of the invention.

[0241] FIG. 198 illustrates an architecture of a computer system that may be used in accordance with certain implementations of the invention.

DETAILED DESCRIPTION

[0242] In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several implementations of the present invention. It is understood that other implementations may be utilized and structural and operational changes may be made without departing from the scope of the present invention.

A. Overview

[0243] Implementations of the invention provide an enterprise spatial system that supports functions (e.g., viewing, analysis, and other functions) for processing both enterprise data and third party data. The enterprise data may include spatially referenced data and/or non-spatially referenced data, and the third party data may include spatially referenced data and/or non-spatially referenced data. Spatially referenced data refers to data that has associated coordinate data, and non-spatially referenced data refers to data that does not have associated coordinate data.

[0244] Implementations of the invention provide analysis of spatially referenced and/or non-spatially referenced data. The results of the analysis may be spatially referenced data and/or non-spatially referenced data. Also, implementations of the invention may store data as data layers, which may include spatially referenced data and/or non-spatially referenced data (e.g., a data element, table, etc.). Although specific examples herein may refer to, for example, graphical objects, images or maps, the techniques of the invention are applicable to any type of data.

[0245] The enterprise spatial system may store and/or process spatial and geospatial information, which include, for example, geographic reference data, including, but not limited to, vector data, raster data, and tabular data, such as, customer information, sales data, and marketing data. For spatial data, each data element in a data set has coordinate data associated with the data element, such as an x, y and z coordinate. For geospatial data, the coordinate data is tied to a point on earth. So, for example, the x coordinate becomes longitude, y coordinate becomes latitude, and the z coordinate becomes elevation. Therefore, geospatial data is a subset of spatial data, and geospatial information systems are a subset of spatial information systems. Although examples herein may refer to geospatial data or geospatial information systems, the techniques of the invention are applicable to any type of data or information processing system.

[0246] Implementations of the invention provide a method, system, and program for providing data processing systems coupled with one or more live (up to and including 24 hours.times.7days) data centers to securely share, access, and/or distribute data from, for example, enterprise data stores at an enterprise combined with hosted data (e.g., enterprise or third party data) from the enterprise spatial system. The combined data is used to generate data layers to allow users to view, analyze, and share spatially referenced data using different client software (e.g., client applications). That is, different client applications may retrieve the same data from the server system and provide different presentations of the data to the user, based on the needs of the user.

[0247] More specifically, implementations of the invention provide solutions for the above described problems through, for example, software, which can simultaneously access enterprise data and third party data, and then dynamically generate (e.g., by geocoding) spatially referenced data (e.g., graphical representation data on a map) based on a user's request.

[0248] To solve each of the problems identified above, unique solutions within the context of the instant invention have been developed in the following areas: (1) providing processing coupled with live data centers to securely access enterprise data from enterprise data stores and generate data layers from data centers to allow users to manipulate spatially referenced data or dynamically generated spatially referenced data using different client software; (2) providing software solutions to integrate existing enterprise data stores and application software (e.g., from Oracle Corporation, Siebel Systems, ESRI and others); (3) providing security and access control for simultaneously accessing enterprise data and third party data; (4) using compression, tiling, and pyramiding technologies to provide spatial data for fast data access; (5) processing spatial data and uniformly standardizing the spatial data, where standardizing the spatial data refers to presenting the data in one or more well known formats, as opposed to exposing the data in multiple different proprietary formats to client software, which makes writing and maintaining client software that works with the spatial data more simple; (6) providing secure, linearly scalable, web-based architecture; and (7) developing automated geocoding systems that can geocode non-spatially referenced data `on the fly` to allow for spatially viewing and analyzing other externally available non-spatially referenced data.

[0249] Geospatial information is very important for business. In order for companies to have an advantage over other competitors, the companies need to be able to make informed decisions in a short period of time. Analysis based on geospatial information improves understanding and communication of complex relationships, which fosters better decision making. When analysis is based on geospatial information, better business solutions are obtained from utilizing information resources data, analytical technical tools, and decision criteria rules. Here are some examples of how companies can benefit from using geospatial information: (1) sales departments can better understand customer behaviors, sales patterns, and staffing processes; (2) marketing departments can forecast market growth, strategize for public relations, and work on competitive analyses; (3) planning for facility sites such as stores, manufacturing facilities, and cell towers can be done; and (4) managing risks (e.g., modeling investment risks, insurance liabilities, and emergency preparedness) can be planned more effectively.

[0250] Implementations of the invention are applicable to systems in which a spatial query is executed to deliver a result. A spatial query is a query for which the query results are identified by analyzing spatial relationships between data. One example of a spatial query is a query to identify all household locations within three miles of a department store. Moreover, implementations of the invention are applicable to all systems in which data (e.g., an image or a report) is generated on a server system and displayed on a client system. Also, implementations of the invention are applicable to Geographic Information Systems (GIS) and decision support systems based on spatial data.

[0251] In certain implementations of the invention, a server system is connected to one or more client systems via a network (e.g., the Internet). The server system performs many functions, including, for example: enabling client software to log in to the server system and request and access data; uploading data from client software; retrieving and using data from a data store; generating data layers (e.g., spatially referenced images); sending data to the client software for display to a user; and, handling various notifications to the client software (e.g., a notification regarding new data added to the data store).

B. A System and Method and Computer Product for Coupling a Data Processing Center to a Live Data Processing Center to Provide for Spatially Viewing, Analyzing, and Sharing Enterprise Data and Geospatial Data Across Multiple Users

[0252] B.1 Overview

[0253] FIG. 6 illustrates the use of spatially referenced data in accordance with certain implementations of the invention. Enterprise data 600 includes, for example, sales data, Customer Relationship Management (CRM) data, Supply Chain Management (SCM) data, and assets data. Third party data 610 includes, for example, maps, infra-structure data (e.g., roads, lakes, etc.), and demographics data. In the prior art, the enterprise data 600 and the third party data 610 was not combined in a useful manner. With implementations of the invention, the enterprise data 600 and third party data 610 is converted to spatially referenced data by associating geographic information (e.g., longitude and latitude) with non-spatially referenced data (e.g., sales data). Then, data layers 620
are generated with the spatially referenced data, and the data layers 620
are overlaid based on the longitude and latitude values to form a composite image 630 that integrates the enterprise data 600 and the third party data 610. Thus, for example, it is possible to view locations of stores in which sales are high on the composite image 630.

[0254] B.2 Architecture Overview

[0255] FIG. 7 illustrates, in a block diagram, workflow through a computing environment in accordance with certain implementations of the invention. FIG. 7 represents a system data work flow diagram for simultaneously integrating enterprise data with third party data using a processing center and a live data center, processing spatially referenced data, and providing access to the data.

[0256] FIG. 7 illustrates several components of an enterprise spatial system provided by implementations of the invention, including (1) a Geographical Information System (GIS) processing center/operations center 710, (2) a data center 720, (3) a fulfillment center 730, (4) enterprise integration 740 (which may be part of the data center 720), and (5) client software 750 (e.g, one or more client applications). The client software 750 executes on a client system 752, which has a display screen on which a UI screen or other data may be displayed for viewing by, for example, a user. Although, one client system 752 is illustrated, it is to be understood that many client systems may access data in the production center 722 at any time, including other server systems acting as clients to the enterprise spatial system. Certain implementations of the invention provide a 24/7 live system that integrates and offers on-demand data (e.g., superior quality geographical imagery, associated industry or enterprise specific data, such as, sales information), and analysis tools to enterprises, government, industry, and the general public.

[0257] Prior to implementations of the invention, conventional systems provided no interactive GIS tools for users to access dynamic enterprise data at run time and integrate third party data hosted by a data center. That is, with implementations of the invention, users may access the GIS processing center/operations center 710, which processes data (e.g., converting Tagged Image File Format (TIFF) to Joint Photographic Expert Group (JPEG) format) at run time, and makes the processed data available at run time to users without disrupting the data center 720 operations.

[0258] Referring to FIG. 7, enterprise data sources 702, government/Freedom of Information (FOI) public data 704, and satellite imagery data 706 is input to the GIS processing center/operations center 710 in the form of vector data, tabular data, third party imagery, and/or raw tiled TIFF imagery. Although not shown, other types of data may also be input into the enterprise spatial system. In certain implementations, the satellite imagery data 706 is obtained using airplanes flying over areas and taking photographs with cameras that provide high resolution images. The data is stored in an interim archive tape library 712. As a part of processing data, the GIS processing center 714 retrieves data from the interim archive tape library and forwards the data to pre-production processing 716. UItimately, the data is stored in the production center 722 for client software 750 access.

[0259] The GIS processing center/operations center 710 handles many different operations in pre-production processing 716 due to irregularities in GIS data from various sources. For example, the GIS Processing Center performs data compression (e.g., of image data) at run time during the data transformation stage. Compressing data is important because some data (e.g., GIS image data) cannot be accessed over the Internet due to the size of the data. For example, some image data is in a graphical data format called TIFF. TIFF, as understood by those skilled in the art, is a tag-based image file format that is designed to promote the interchange of digital image data. TIFF provides a multi-purpose data format and is compatible with a wide range of scanners and image-processing applications. It is device independent and is used in most operating environments, including Windows.RTM., Macintosh.RTM., and UNIX.RTM.. TIFF is one of the most popular and flexible of the current public domain raster file formats. To be able to use GIS image data that may be transferred over the Internet, implementations of the invention convert large image data to a compressed data format, such as JPEG. There are many reasons for using the JPEG file format. JPEG permits a greater degree of compression than other image formats, such as TIFF, enabling quicker downloading times for larger graphics. Furthermore, JPEG documents appear to retain almost complete image quality for most photographs.

[0260] There are several important stages in data processing at the GIS processing center 714. The following demonstrate four of the different stages and functions of each stage: (a) data acquisition stage; (b) data extraction stage; (c) data transformation state; and, (d) GIS product inventory creation stage. The data acquisition state procures data from various sources (e.g., enterprise data 702, government/FOI public data 704, and satellite imagery data 706). Data acquisition is an important function of the GIS processing center 714. In the data extraction stage, data is staged for use, the data integrity is verified, and data quality control is provided. In the data transformation stage, the following actions occur on data: color fusion, histograms, matching, mosaicing, re-sampling, tiling, and compression, which are well known in the art. In the GIS product inventory creation stage, the following actions occur: metadata is created for the data layers, different data layers are described using metadata, data (e.g., vector, rastor or tabular data) is stored in spatial data store, and GIS data is uploaded to the data center 720 for deployment.

[0261] The data center 720 includes a staging system 721. Data from the staging system 721 is sent to the production center 722. Data from the staging system 721 may also be stored at a master archive tape library 723 and sent to offsite storage 724. The staging system 721 provides a replica of the production center 722 and is used to test the client software, enterprise spatial system software (e.g., server software at servers in the enterprise spatial system), and data. The staging system 721 is used to ensure that a new version of client software and/or data will work correctly when deployed to the production center 722. The production center 722 is used to store data accessed by users via client software 750.

[0262] The data center 720 supports many operations. For example, the data center 720 hosts raster data, vector data, and tabular data for users to access using various client software 750 (e.g., client applications such as, a browser client, a thin client, or an enterprise client). Various techniques of accessing data (e.g., tabular data of sales information) from an enterprise data store and geocoding non-spatially referenced data are supported. In particular, although geocoding may be performed in the GIS processing center/operations center 710, the data center 720 also supports functions that require geocoding in the production center 722. The data center 720 also manages network communications between enterprise users and the data center 720. The data center 720 supports linear scalability to be able to expand the enterprise spatial system provided by implementations of the invention to handle larger data sets (i.e., larger amounts of data) at run time.

[0263] The data center 720 provides security and access controls to enterprise users to securely access their enterprise data, allows enterprise users to simultaneously access dynamic data from their enterprise data store 702 and the data center 720, and processes requests from, for example, client applications by supporting client applications' functionality. The data center 720 also supports different types of analytical functions, such as querying for data, generating data reports, retrieving data layers, accessing data, and sharing and/or collaborating with multiple users.

[0264] The fulfillment center 730 receives orders for data (e.g., particular data, a particular image or a set of images), prepares the data (e.g., creates or collects the appropriate data), and delivers the data to a requested location. Further details of order fulfillment are provided below.

[0265] Enterprise integration 740 allows users to access securely their enterprise data that is stored outside of the data center 720. Enterprise integration 740 also determines whether enterprise data are pre-geocoded or not, and, if the enterprise data is not pre-geocoded, the enterprise data is parsed and geocoding information is provided by determining the proper longitude and latitude information to be associated with the enterprise data elements (e.g., records). The enterprise integration technology 740 also provides the ability to interact with and retrieve data from third party applications using various Application Programming Interfaces (API) exposed by the third party applications and makes the data available to the client systems of the data center 720. The enterprise integration technology 740 also provides various Application Programming Interfaces (API) to third party applications so that different third party applications, including enterprise applications, can access production data from the data center 720. The APIs provide defined function calls to third party applications so that users can interact with the enterprise spatial system provided by implementations of the invention to utilize stored data (e.g., raster data, vector data, and tabular data) for spatially analyzing enterprise data. In addition to accessing data, the APIs also allow third party applications to utilize the various analysis functions provided by the enterprise spatial system.

[0266] The client software 750 (e.g., client applications) allows users to manipulate spatial data interactively by making dynamic data requests from the data center 720. The client software 750 includes, for example, browser-based clients, thin clients, thick clients, and enterprise clients. The client software 750 handles all user actions promptly and retrieves spatial data from the data center 720 in a timely manner. To achieve this goal, the client software 750 and the data center 720 rely on using a multiple data layering mechanism. That is, unlike legacy GIS software, the data center 720 does not combine multiple data layers as one composite image when transmitting spatial data to users over a network. Instead, the data center 720 retrieves proper spatial data layers from various data stores based on client requests and converts the data layers to individual images. Then, rather than combining multiple spatial data layers as one raster file or vector file (e.g., JPEG, ASCII Extensible Markup Language (XML) or other forms of binary file), the data center 720 sends the images separately to the client software 750. The client software caches the images for the different spatial data layers to avoid generating new image files every time users change back and forth between different spatial data layers. The client software may combine multiple images to form a composite image that is displayed to a user.

[0267] FIG. 8 illustrates services in accordance with certain implementations of the invention. Core spatial services 810 include, for example, storing third party data and enterprise data for various businesses. Also, enterprise data stored on-site at a business may be accessed, via, for example, a Virtual Private Network (VPN). Healthcheck servers perform tests to ensure that all systems are working correctly. Reporting servers are used to generate reports. Data store servers link Extraction, Transformation, and Loading (ETL) servers connected to locally hosted and remotely hosted enterprise data storage devices, reporting servers, and storage devices storing third party data. Spatial servers perform spatial manipulation of data, which includes, for example, performing spatial queries and rendering spatial data layers. Application servers coordinate the server tasks performed to satisfy requests made by client software (e.g., client software 750). Web/Portal servers provide front end access to different software services provided by the production system 722.

[0268] The Web services 820 include, for example, login, finding of addresses, render maps, print maps, run queries, get reports, save maps, and get projects. Projects are saved user views of the data, including the results of spatial analysis performed by the user. The ellipsis indicate that other services may be provided. A network, such as the Internet 830, enables the various services to communicate with each other. Application services 840 perform particular functions. In particular, each application service is a collection of distinct features 2012 that perform particular functions. For example, geocoding is a feature that performs the function of translating an address to a latitude/longitude pair. Solution services 850 perform a combination of application functionality.

[0269] FIGS. 9A-9E illustrate various computer system architectures in accordance with certain implementations of the invention. In FIG. 9A, the customer's environment 902 performs data extraction 904, and the extracted data is sent to the enterprise spatial system 910 via a network, such as the Internet 908. In certain implementations, the enterprise spatial system is one in which third party data and/or enterprise data is hosted (e.g., in a data store) and services provided by implementations of the invention are available (e.g., to a user at a client system accessing a server system in the enterprise spatial system via client software).

[0270] The enterprise spatial system 910 performs data sourcing 912, prepares data 914, has data storage 916, and performs core functions 918. In data sourcing 912, third party data is aggregated. Preparing data 914
includes, for example, address cleansing, geocoding, and otherwise preparing data. The data storage 916 stores both enterprise and third party data. The core functions 918 include, for example, Web services, report preparation and delivery, spatial analysis functions (such as spatial queries), business rules management, and collaboration among users. Data and results of the core functions supported by implementations of the invention are delivered from the enterprise spatial system 910 to a client software interface, such as a browser interface 906, in the customer's environment via the Internet 908.

[0271] FIG. 9B differs from FIG. 9A in that data storage 916 at the enterprise spatial system 910 stores third party data spatial data. The enterprise data extracted in the customer's environment 902 is sent to the enterprise spatial system 910 for data preparation and is then returned to the customer's environment for data storage 920. The enterprise data is retrieved into the enterprise spatial system 910 from the data storage 920 in the customer's environment 902 when core functions 918 are to be performed.

[0272] FIG. 9C differs from FIG. 9B in that third party data is prepared 914 in the enterprise spatial system 910, while enterprise data is prepared 930 in the customer's environment 902. The enterprise data is stored in data storage 920 in the customer's environment, and the enterprise data is retrieved into the enterprise spatial system 910 when core functions 918 are to be performed.

[0273] FIG. 9D differs from FIG. 9C in that the data storage 920 in the customer's environment stores both enterprise and third party data spatial data. That is, third party data spatial data is no longer stored in the enterprise spatial system 910. In this illustration, after third party data is prepared in the enterprise spatial system 910, the third party data spatial data is sent to the customer's environment 902 for storage. Additionally, the core functions 940 are performed in the customer's environment 902, rather than in the enterprise spatial system 910.

[0274] FIG. 9E differs from FIG. 9D in that the enterprise spatial system has been eliminated and all processing occurs in the customer's environment. Therefore, data sourcing 950 and preparing data 960 for third party data occur in the customer's environment 902.

[0275] FIG. 10 illustrates a software architecture of a server system 1000
in accordance with certain implementations of the invention. The server system 1000 includes a Web tier 1010, an application server tier 1020, a data provider tier 1030, a data store tier 1040, and a data integration tier 1050.

[0276] A Web tier 1010 includes a Web/Portal server, an authentication service, an input/protocol transform engine, a request dispatcher, and Web services components to support requests coming from client software and return different data layers to the client software.

[0277] The Web/Portal server communicates via HyperText Transfer Protocol (HTTP), HyperText Transfer Protocol over Secure Socket Layer (HTTPS) or Extensible Markup Language (XML). The Web/Portal server serves up data (e.g., map images and static pages).

[0278] In certain implementations, the authentication service is an authentication module that plugs into the authentication framework of the Web/Portal server. One such authentication service uses Lightweight Directory Access Protocol (LDAP) as a back end authentication service provider.

[0279] The input/protocol transform engine provides the front end that understands the client protocol and converts the incoming requests to a canonical form to be used by subsequent server components. The input/protocol transform engine does not attempt to parse the actual service requests, but wraps the service requests in a standard form to be parsed subsequently by the service request transform engine in the service logic components of the application server tier 1020.

[0280] The input/protocol transform engine supports two transform components: a Web Map Server/Web Feature Server (WMS/WFS) adapter and a Java Server Page (JSP)/Servlet adapter. The WMS/WFS adapter is a Web services front end. In certain implementations of the invention, the Web Map Server/Web Feature Server may be one defined by the Open GIS Consortium, Inc. The JSP/Servlet adapter is a legacy server interface used by client software to send server requests wrapped in XML request packages.

[0281] The request dispatcher dispatches the incoming request to one of several subcomponents within the work flow manager, depending on the client software and the actual request being made. The request dispatcher interfaces with a tracking system that performs tracking of user requests and system usage reporting.

[0282] An application server tier 1020 is divided into a business logic tier and a service logic tier. The business logic tier includes a work flow manager, a session manager, an account manager, and content access control components to support administrative tasks related to servicing the user requests. The administrative tasks performed at this tier may also include various c-commerce related transactions, such as handling purchase orders, shopping cart management, billing, managing user profiles, and managing accounts.

[0283] The work flow manager manages the functions that are adjunct to the services requested by the client software. The work flow manager performs functions, such as checking access control to the data requested by the client, logging, tracking session validation, etc. The work flow manager uses the session manager, account manager, and content access control components to perform these functions. In particular, the work flow manager takes user requests from the client software and then makes function calls to different components to gather results. After gathering results, the work flow manager component aggregates the results, converts the aggregated results to a format expected by the client software, and sends the converted results back to the Web tier 1010. The Web tier 1010
uses the appropriate protocol (e.g., HTTP or XML) to send a response (which includes the results generated by the work flow manager) to the client software request.

[0284] An optional content usage monitor component may be included in the business logic tier to monitor contents and resources used and provide the necessary data for billing and resource planning. The content usage monitor component parses requests coming from a user via client software and logs parsed information to monitor how different contents or resources hosted by the server system are used. Contents in this context are application services and data made available to the users by the server system. Resources refer to system resources such as memory, file storage space, CPU utilization etc.

[0285] The service logic tier includes a service request transform engine, a service aggregator, data provider adapters, access filters (e.g., system, user or client), map assembler, feature assembler, metadata server, and business rules components to support various service logic.

[0286] In certain implementations, the following functions are supported by the service logic tier: image generation using mapping logic, spatial query analysis, report generation, and thematic report generation (i.e., generating a report based on a theme). For example, enterprise data and spatially referenced data may be combined to show different colors on a map to show different sales information based on different counties.

[0287] The service request transform engine consists of a collection of parsers and response message builders. The service request transform engine understands the grammar used by the client software to request services from the server system and receive responses back from the server system. In certain implementations, there is one parser/response message builder for each type of client application. In particular, the service request transform engine standardizes client requests into a standard format for the service aggregator.

[0288] The service aggregator coordinates the activities of one or more data provider adapters, which retrieve data based on client requests and convert the data to a form requested by the client software, and includes one or more data providers. A data provider adapter may be viewed as an intermediary that translates requests made by the service aggregator to a form that the actual data provider understands. This allows the service aggregator to interact with the data adapters in a common language/syntax. The data provider adapter performs the appropriate translation to pass the request on to the data provider in a possibly different language/syntax expected by the data provider.

[0289] A single client request may require more than one data provider to service the request. For example, the data provider required to render a vector layer may be a data provider called the Map Server. The client request may ask for more than one vector layer to be rendered. The service aggregator may instantiate more than one Map Server and coordinate the activities of these data providers to generate the response for the client request. Examples of service aggregators are: map assembler, feature assembler, and metadata server. The service aggregator understands requests from the client software and makes specific function calls to obtain requested data layers or analysis results.

[0290] Data provider adapters are plug-in points for back-end data service providers that are aggregated into services that are offered by implementations of the invention. The data provider adapters decouple the protocol and grammar used by a data service provider form the protocol and grammar used by the service aggregator. Examples of data provider adapters are: a Map Server, ArcIMS.TM. (a service access protocol available from ESRI), Oracle.RTM. Spatial Query Engine (a data access protocol available from Oracle Corporation), or ArcSDE.TM. (a data access protocol available from ESRI).

[0291] The access filters are run-time embodiments of data access rules that are set up using metadata. Access filters are applied to all data accesses, irrespective of the data provider used to access the data. In particular, the access filters receive business rules as input and use the business rules to filter data that may be accessed. Access filters may be specified at a system level, at a per user level or by the client software. System filters are applied to all data access requests irrespective of the user accessing the data. User filters are filters that are customized for specific users. So, for example, user filters may be set up such that the users from a particular sales territory will see only data for their own sales territory. Client filters are filtering rules requested by client software (e.g., client applications) based on user input.

[0292] The data provider tier 1030 includes a map server, a raster server, a report engine, a query engine, and a geocode server. The map server converts vector data to viewable images. The raster server converts raster data to viewable images. The report engine generates reports requested by clients from data. In certain implementations, the report engine uses Style Reports (which is available from InetSoft Technology Corp.). In certain implementations, the spatial data store engine (e.g., Oracle.RTM. Spatial Query Engine) in the data store tier 1040 interfaces with the report engine and data. The query engine provides spatial and non-spatial query access to data. The geocoder provides services to geocode requests from client software. In certain implementations, the geocoder may comprise software available from Sagent.

[0293] The data store tier 1040 includes a spatial data store engine and production tabular/vector data and raster data catalog. At this level, data access related functions are provided.

[0294] The data integration tier 1050 includes an extraction, transformation, and loading (ETL) component, a spatial data preparation engine, and a data manager. The ETL component is used to perform ETL functions for real-time and batch oriented data processing for hosted data. In certain implementations, the ETL component comprises DT/Studio.TM. software available from Embarcadero Technologies, Inc. The spatial data preparation engine is used for spatial manipulation of hosted data. In certain implementations, the spatial data preparation engine comprises a Feature Management Engine, which is available for purchase from Safe Software, Inc. The spatial manipulation involves cleansing spatial geometries, merging geometries to make the data rendering faster, re-sampling to create vector pyramid layers, etc. The data manager is used to create and deploy metadata for the hosted data. The data manager is also used to transport and deploy the hosted spatial and non-spatial data.

[0295] A Storage Area Network (SAN) connects data and components to other components. Also, there exist network (e.g., Wide Area Network (WAN), Local Area Network (LAN), Internet, etc.) connections to access enterprise data that reside outside of the server system 1000.

[0296] FIG. 11A illustrates a software and Web services architecture 1100
in accordance with certain implementations of the invention. A data store is accessed via a data store access control layer. The next outer layer includes data provider adapters, such as a map server, an Oracle.RTM. Spatial Query Engine, an ETL, and a spatial data preparation component. The ETL interfaces with a third party data source. The spatial data preparation component accesses a third party data store. The ETL and spatial data preparation components are used to store data in the data store. The access to data provider adapters and the data they work with are controlled using metadata about the data providers and the data. Thus, metadata acts as another software layer around the data providers and the data that the data providers work with.

[0297] The next outer layer includes all the functions and services offered by implementations of the invention to client software (e.g., client applications). These functions and services include, for example, account/session management (e.g., managing access control), a spatial application service (which provides functions, such as spatial queries, rendering of spatial images etc.), a rendering service, a metadata service (which retrieves and returns metadata about data layers available in the server system), a data manager, a geocode service, and a report service (for creating and generating various reports). The next outer layer includes access control, which controls access to the functions and services at the layer beneath it. The access control layer interfaces with an authentication module. The authentication modules controls security functions such as logging in/logging out. Above the authentication module, resides the Web front end, which includes a portal, Web services/SOAP, and JSP/Servlets. Above the Web front end, are systems to which data and results may be delivered.

[0298] FIG. 11B illustrates an alternative software and Web services architecture 1110 in accordance with certain implementations of the invention. A data store is accessed via a data store access control layer. The next outer layer includes data provider adapters, such as a map server, an Oracle.RTM. Spatial Query Engine, an ETL, and a spatial data preparation component (for preparing data by, for example, geocoding the data). The data provider adapters interface with metadata. The next outer layer includes account/session management, a spatial application service, a rendering service, a metadata service, a data manager, a geocode service, and a report service. The next outer layer includes. access control.

[0299] The next outer layer includes functions, such as, login/logout, open projects, ping, GetFeatures/Save/UpdateFeatures, GetImage, GetServiceInfo, and GetGeocode. GetFeatures/Save/UpdateFeatures retrieves, saves and updates spatial data in spatial data sets. GetImage generates a viewable image of spatial data. GetServicelnfo retrieves metadata about data sets. GetGeocode retrieves location information such as latitude and longitude from business data such as an address, intersection, name of place, landmark etc.

C. Integrating with Enterprise Data

[0300] Currently, many enterprise customers use business support systems (BSS), such as CRM, ERP, and SCM to improve revenue growth, customer satisfaction, and employee productivity. Although BSS solutions are very beneficial to businesses, there are many limitations as well, such as when customers want to visually analyze BSS data that they have stored in their data stores. In the past,