March 2008 Oracle Spatial User...
Transcript of March 2008 Oracle Spatial User...
March 2008
Oracle Spatial User Conference
Oracle Spatial User Conference
March 13, 2008
Sheraton Seattle Hotel
Seattle, Washington USA
Kevin KellyCuyahoga County
Mark MillmanMizar, LLC
Patrick ZhuMichael Baker, Inc.
March 2008
Oracle Spatial User Conference
Maximizing ValueOf Cuyahoga County-Wide GISUsing Oracle Spatial and Fusion 11 Middleware
March 2008
Oracle Spatial User Conference
Overview
• Issues• Independent agencies
• Information stove pipes
• Various GIS
• New investments in spatial data
• Solutions• Federated enterprise database
• Long development horizon
• A magnet for independent information systems
• Open standards
• Oracle Enterprise Technology
March 2008
Oracle Spatial User Conference
Cuyahoga County, Ohio
Cuyahoga County, Ohio
Cuyahoga County, Ohio
• The Cleveland Metropolitan Area• Over 80 county agencies under 70 elected
officials.• 73 strongly governed municipalities• 105 tax authorities• Population approximately 1.4 million• Most heavily populated county in Ohio and
22nd most populous county in the nation
• The Cuyahoga County Enterprise GIS Office• Currently Under the County Engineer• Funded by Department of Homeland Security
Grants• Governed by a 5 –member Steering Committee
• GIS Coordinator• County Engineer’s Office• County Auditor’s Office• County Information Services Center (CIO)• County Commissioners
• Advised by a broader Working Group• Emergency Services, Planning Commission, County
Board of Elections, City of Cleveland, NEORSD, etc.
What is CEGIS?
• The timing was right for CEGIS
• Funding sources (HLS, HB361, LBRS) etc.• Technological advancements:
• Geospatial data interoperability and portability• Linearly scalable SOA
• Cross-Jurisdictional Data Sharing Agreements• City of Cleveland, NEORSD
• Benefits:• Modernized landbase• Horizontally integrated geospatial applications• Fits current IT business model
Why implement CEGIS?
Technologies
Technology Status
Oracle 11g Database Production
Oracle 11g Application Server Expected 2008
JDeveloper 11g P3 Preview
EJB 3 – JPA – Spatial Extensions Beta
JSF – ADF Rich Faces Beta
MapViewer 11g R1 Preview
Mizar ADF Rich Faces – Spatial – MapViewer framework
In development
March 2008
Oracle Spatial User Conference
Oracle 11g Database
• Federated model• Local control• Enterprise model
• Improved Spatial• Performance
• 3D, Point Clouds, DTM
• SecureFiles• Georaster performance• LOB performance
March 2008
Oracle Spatial User Conference
Oracle 11gApplication Server
• JSF 1.2• Expression Language
• Controller model
• User interface
• Trinidad• Oracle donated ADF Faces to Apache
• ADF Rich Faces• Foundation for Fusion 11g
• Ajax User Interface, JavaScript API
• Destined for open source
March 2008
Oracle Spatial User Conference
JDeveloper
• JDeveloper 11g Preview 3
• JSF 1.2
• ADF Rich Faces
• JavaScript
• SQL Developer
• Pool Connectors
• Hints
• JPA Wizards
• Deployment Wizards
• OC4J test environment
March 2008
Oracle Spatial User Conference
EJB 3 JPA
• EJB 3.0
• JPA only for JSF applications• Will use Session for non-JSF purposes
• Java Persistence Architecture• Open Standard
• Memory conservancy• Transaction management
• TopLink• EclipseLink
• Idiosyncrasies but consistent and reliable
March 2008
Oracle Spatial User Conference
JPAMarch 2008
Oracle Spatial User Conference
@Entity
@Table(name = "SITE_TYPE")
public class SiteType extends GenericBean implements Serializable {
@Id
@Column(nullable = false)
private String code;
private String description;
public SiteType() {
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Transient
public String getPrimaryKeyValue() {
return getCode();
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
JPAMarch 2008
Oracle Spatial User Conference @Entity
@Table(name = "COUNTY")
public abstract class County extends GeometryBean implements JPAGeometryInterface {
@SequenceGenerator(name = "COUNTY_PK",
sequenceName = "SEQ_COUNTY_ID")
@Id
@GeneratedValue(generator = "COUNTY_PK")
@Column(name = "COUNTY_ID", nullable = false)
private Long countyId;
@Convert("JGeometry")
private JGeometry geom;
private String name;
... ...
ADF Rich Faces
• Beyond Trinidad
• Trinidad is open source version of ADF Faces
• Will be donated to open source
• JavaScript API, AJAX
March 2008
Oracle Spatial User Conference
ADF Rich FacesMarch 2008
Oracle Spatial User Conference
<?xml version='1.0' encoding='utf-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:afh="http://myfaces.apache.org/trinidad/html" version="1.2">
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<f:view>
<af:document id="map_document" title="#{res['cegis.browserTitle']}"
maximized="true" clientComponent="true">
<af:clientAttribute name="foi_maps" value="#{FoiTree.foiRowMap}"/>
<af:clientAttribute name="lyr_maps" value="#{MapOverlayTree.layerRowMap}"/>
<af:clientAttribute name="mapCenterX" value="#{SessionConstants.mapCenterX}"/>
<af:clientAttribute name="mapCenterY" value="#{SessionConstants.mapCenterY}"/>
<af:clientAttribute name="srid" value="#{SessionConstants.srid}"/>
<af:clientAttribute name="mapZoom" value="#{SessionConstants.mapZoom}"/>
<af:clientAttribute name="baseMap" value="#{SessionConstants.baseMap}"/>
<af:clientListener method="doLoad" type="load"/>
<f:facet name="metaContainer">
<af:group>
<afh:script source="js/oraclemaps.js"/>
<afh:script source="js/cpc.js"/>
<afh:script source="js/commonUtils.js"/>
<afh:script source="js/strawmanUtils.js"/>
<afh:script source="js/mapUtils.js"/>
<afh:script source="js/slideshow.js"/>
</af:group>
</f:facet>
ADF Rich FacesMarch 2008
Oracle Spatial User Conference
<af:form>
<af:panelGroupLayout partialTriggers="head:lbcl head:sbcl">
<af:pageTemplate id="head" viewId="templateDefs/headBanner.jspx" />
</af:panelGroupLayout>
<af:panelSplitter orientation="horizontal" splitterPosition="350"
inlineStyle="width:100%; height:800px;">
<f:facet name="first">
<af:panelGroupLayout>
<af:panelHeader id="seahead" text="#{res['cegis.Search_Header']}"
clientComponent="true"/>
<af:pageTemplate id="parsea" viewId="templateDefs/ParcelSearch.jspx"/>
<af:pageTemplate id="thmtr" viewId="templateDefs/themePanel.jspx"/>
</af:panelGroupLayout>
</f:facet>
<f:facet name="second">
<af:panelSplitter orientation="vertical" splitterPosition="500">
<f:facet name="first">
<af:pageTemplate id="mapPage" viewId="templateDefs/mapComp.jspx"/>
</f:facet>
<f:facet name="second">
<af:pageTemplate id="partab" viewId="templateDefs/parcelTable.jspx"/>
</f:facet>
</af:panelSplitter>
</f:facet>
</af:panelSplitter>
</af:form>
</af:document>
</f:view>
</jsp:root>
ADF Rich FacesMarch 2008
Oracle Spatial User Conference
<af:menu text="Towns">
<af:forEach var="item" items="#{TownTable.townMenuList}">
<af:menu text="#{item.title}">
<af:forEach var="subItem" items="#{item.list}">
<af:commandMenuItem text="#{subItem.nameMC}">
<af:clientAttribute name="zoomLevel" value="5"/>
<af:clientAttribute name="srid" value="#{subItem.srid}"/>
<af:clientAttribute name="location“ value="#{subItem.wktLocation}"/>
<af:clientListener method="zoomTo" type="click"/>
</af:commandMenuItem>
</af:forEach>
</af:menu>
</af:forEach>
</af:menu>
MapViewer 11g R1
• Custom Tags
• Annotations
• Caching
• JavaScript API
• Dynamic Client Side Styles
• JDBC Theme-Based FOI
• FOI Customizations
• Tutorials
March 2008
Oracle Spatial User Conference
MapViewer 11g R1March 2008
Oracle Spatial User Conference
function showPortalMap()
{
mapview = new MVMapView(document.getElementById("map"), baseURL); addBaseMaps();
addLayers();
addThemeBasedFOIs();
mapview.setCenter(mpoint);
mapview.setZoomLevel(mapZoom);
mapview.setHomeMap(mpoint,mapZoom);
mapview.addMapDecoration(navigationDecoration);
mapview.addMapDecoration(scaleBarDecoration);
mapview.display();
}
Mizar Framework
• Bringing it all together
• Libraries• Common
• Persistence (JPA)
• Security
• JSFFaces
• ADFRichFaces
• Metadata
• Addressing (Streets)
• Open Source
• Oracle with choice
March 2008
Oracle Spatial User Conference
Mizar FrameworkMarch 2008
Oracle Spatial User Conference
Challenges
• Beta software
• Limitations to JPA inheritance model
• Lack of Application Server
• Integration of works-in-progress
• Declarative focus of Fusion 11g
• ADF Rich Faces – Trinidad incompatibility
• Documentation
• Caching a dynamic data set
• Experience
March 2008
Oracle Spatial User Conference
Opportunities
• ADF Rich Faces
• Exciting User Interface
• Advances in JavaScript development environment
• Advances in JavaScript API
• Chrome
• Open Source future
• JPA
• Scalability
• Spatial Extensions
• Map Viewer
• Much improved API
• Much improved documentation
• Very useful tutorials
• Much improved user experience
• A solid foundation for years of development
March 2008
Oracle Spatial User Conference
D E M O N S T R A T I O N
March 2008
Oracle Spatial User Conference
AQ&
Special Thanks
• Jayant Sharma• Oracle Spatial
• Doug Clarke• Oracle Toplink
• Brian Fry• Oracle Jdeveloper
• Xavier Lopez & Jim Steiner• Oracle Spatial
• Joe Seppi• Woolpert
March 2008
Oracle Spatial User Conference