Anda di halaman 1dari 18

Using ArcGIS Schematics for

Inside Plant Representation


An ESRI Technical Paper May 2006

ESRI 380 New York St., Redlands, CA 92373-8100, USA TEL 909-793-2853 FAX 909-793-5953 E-MAIL info@esri.com WEB www.esri.com

Copyright 2006 ESRI


All rights reserved.
Printed in the United States of America.
The information contained in this document is the exclusive property of ESRI. This work is protected under United States
copyright law and other international copyright treaties and conventions. No part of this work may be reproduced or
transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, or by any
information storage or retrieval system, except as expressly permitted in writing by ESRI. All requests should be sent to
Attention: Contracts and Legal Services Manager, ESRI, 380 New York Street, Redlands, CA 92373-8100, USA.
The information contained in this document is subject to change without notice.
U.S. GOVERNMENT RESTRICTED/LIMITED RIGHTS
Any software, documentation, and/or data delivered hereunder is subject to the terms of the License Agreement. In no event
shall the U.S. Government acquire greater than RESTRICTED/LIMITED RIGHTS. At a minimum, use, duplication, or
disclosure by the U.S. Government is subject to restrictions as set forth in FAR 52.227-14 Alternates I, II, and III (JUN
1987); FAR 52.227-19 (JUN 1987) and/or FAR 12.211/12.212 (Commercial Technical Data/Computer Software); and
DFARS 252.227-7015 (NOV 1995) (Technical Data) and/or DFARS 227.7202 (Computer Software), as applicable.
Contractor/Manufacturer is ESRI, 380 New York Street, Redlands, CA 92373-8100, USA.
ESRI, the ESRI globe logo, ArcMap, ArcGIS, ArcInfo, www.esri.com, and @esri.com are trademarks, registered trademarks,
or service marks of ESRI in the United States, the European Community, or certain other jurisdictions. Other companies and
products mentioned herein are trademarks or registered trademarks of their respective trademark owners.

J-9248

Using ArcGIS Schematics for


Inside Plant Representation
An ESRI Technical Paper
Contents

Page

What Is "Inside Plant"? ......................................................................

How Do I Create an Inside Plant Diagram Using


ArcGIS Schematics? ........................................................................
Starting Questions........................................................................
Items to Create in ArcGIS Schematics ........................................
Example .................................................................................
Finishing Touches (Optional) ................................................
The VBA Code ................................................................
The Visual Basic DLL Code............................................

1
2
2
2
10
11
13

Final Testing ......................................................................................

13

Additional Information ......................................................................

14

ESRI Technical Paper

J-9248

Using ArcGIS Schematics for


Inside Plant Representation

What Is "Inside
Plant"?

How Do I Create an
Inside Plant
Diagram Using
ArcGIS Schematics?

"Inside plant" is a term that has different meanings depending on what


industry is being discussed. In the electric industry, it will most likely be
the inside of a substation; in the oil industry, it may be the inside of a gas
plant or refinery; and in the telecommunications industry, it may be the
inside of a switch cabinetthe list goes on and on. Basically, any data that
has to/from node connectivity but is not normally viewable in the GIS, can
be referred to as an inside plant. Follow the steps below to make a diagram
showing your business' organizational chart, for example.
Each inside plant configuration will vary depending on how detailed it is or how many
data sources are involved. In the following example, you will look at adding inside plant
representations for a dataset from Brazil that includes gas plants and refineries.

ESRI Technical Paper

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Starting Questions

Items to Create in
ArcGIS Schematics

Example

The following questions need to be answered before getting started:

Where is the data that will be used to create the schematic elements for the inside
plant diagrams?

Is there to/from node connectivity in the data, or is there a way to calculate


connectivity from attributes?

What items do you want to see on the inside plant diagrams?

Do you want interaction from ArcMap or just from ArcGIS Schematics?

The following items will need to be created to represent the inside plant diagram with
ArcGIS Schematics:

A new data source to connect to the external data

A new diagram type representing the inside plant

Node and link element types to represent the items that will be displayed in the
diagram

Custom interaction, as needed

In this example, a Microsoft Access database called ISP.mdb is used. In the following
screen shot, all the tables relate to the pug_PUG_gas_plants table.

May 2006

Using ArcGIS Schematics for Inside Plant Representation


J-9248

The example uses four tables:

The Equipments table holds all the internal equipment pieces. Equipment is
differentiated by the Type field.

The Valves table keeps track of the valves. Valve types are differentiated by a Type
field.

The Pipes table links all the equipment and valve pieces.

The pug_PUG_gas_plants table is the feature class representing gas plants or


refineries features that are seen in ArcMap. These are the keys to both the outside
world (ArcMap) and the inside world (inside plant).

You have answered all four of the questions from the Starting Questions section and have
a database that contains all the items for the internal representations. The Pipes table has
two columns, From_Node_Num and To_Node_Num, that define the to/from connectivity
for the internals. Based on the three tables (not including the Plants table) and the Type
field on the Equipments and Valves tables, you know everything you want to show on the
Inside Plant diagram. You can use interaction with ArcMap because the items in the
pug_PUG_gas_plants table will have an outside world representation. So now you are

ESRI Technical Paper

Using ArcGIS Schematics for Inside Plant Representation


J-9248

ready to do some work using the ArcGIS Schematics Designer application to define the
parts and pieces to create the inside plant diagrams.
Start by either creating a new schematic dataset or using an existing one. To create a new
schematic dataset, you will need to create a new personal geodatabase or use an existing
one. Once you have the geodatabase ready, right-click the geodatabase and choose
New>Schematic Dataset from the pop-up menu. Rename the dataset as desired. Rightclick on the schematic dataset you just created and choose Edit Project from the pop-up
menus. This starts the Schematics Designer application.
Now that you have the dataset, the first step in the Items to Create in ArcGIS Schematics
section is to create a new data source. The data source needs to point to your database
where the inside plant tables reside. Note that this could be in many databases. If that is
the case, you will need to create one data source for each database. If your schematic
dataset was created in the same database as the tables for the inside plant elements, then
you do not need to create a new data source. Schematics automatically creates a data
source called CURRENTDS that points to the database where the schematic dataset was
created. If you need to create a new data source, right-click the Data Sources entry in the
tree view of the Schematics Designer application and choose Add data source from the
pop-up menu. ArcGIS Schematics uses Microsoft's Data Link wizard to create a
connection, so depending on the database used, configure the Provider and Connection
tabs accordingly, then test the connection to make sure it is running.

May 2006

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Once the connection is successful, you should have a data source available inside the
Designer application. In this example, the name is ISP.

ESRI Technical Paper

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Step 2 in Items to Create in ArcGIS Schematics is to create a diagram type. Edit the
dataset using the Designer application and create a new Diagram Type for inside plant
diagrams. Right-click the Diagram Types entry in the tree view and choose Create from
the pop-up menu. In this example, it is named ISP_GasPlant.

Change the Schematic Builder to Custom Query Based Builder using the drop-down box.
To complete the definition, set the data source to the one created in step 1, or use
CURRENTDS if it is in the same database, then define a query that will return the

May 2006

Using ArcGIS Schematics for Inside Plant Representation


J-9248

records from which a user may pick to view the internals selected document. In this
example, we use SELECT *FROM pug_PUG_gas_plants. Set the Identifier, which in this
example is NAME, a unique field in the database. If a user wanted to open an
ISP_GasPlant diagram, he or she would be given a list of Plant names from which to
choose. You need to create an attribute that will retrieve the Plant_Number for the
selected plant. That number will be required by the element types to return just the
internal objects that are related to the selected plant. (In the table diagrams above, you
can see that the Equipment, Valves, and Pipes tables do not contain the name of the plant
in which they belong, only the number of the plant.)

Once the element types have been successfully created, associate them to the diagram
type, but for now you are done with the diagram type.
Step 3 from Items to Create in ArcGIS Schematics above is to create the element types.
You will need to create an element type for each of the object types that you want to see
on the diagram.
For this example, you will create one node element type and one link element type.
Repeat the steps for all needed element types.
For the node element type, right-click the Element Types tree view entry and select
Create. Give the new element type a name and select Node from the Type drop-down list.
Click OK to see your new element type in the tree view.

ESRI Technical Paper

Using ArcGIS Schematics for Inside Plant Representation


J-9248

To complete the element type, you must associate the element type to the diagram type;
set the data source to the correct data source; then define the query, identifier, and a
symbol to use. To associate, right-click the diagram type and select Associate Element
Types from the pop-up menu, then check the appropriate boxes.

Notice that the query ends with a question mark. In the query creation screen, it has been
identified that the PLANT_NUMBER parameter will come from the attribute that you
created for the diagram type Plant_Number. You can further define the ISP_Valves
element type by defining filters for the different types of valves that are stored in the
Type field of the Valves table.

May 2006

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Creating a link element type is the same as creating a node except that you must select
Link in the Create Element Type dialog box and define a few more attributes.

The mandatory attributes to create are ExtremityNode and OriginNode. These get set to
the To_Node_Num and From_Node_Num fields in the ISP Pipes table.
You are now ready to test the application. To test, click the Open Diagrams button on the
Designer's Diagram toolbar.

You should see ISP_GasPlant in the Diagram type field and a list of the plant names in
the Diagram name field. Select a plant and click OK. If all the steps worked, you should
have your new diagram. Note that the first time a diagram is opened, the items will be
placed on a grid layout. After the user moves items around, or uses a predefined layout
algorithm and saves the diagram, it will then be opened as it was left from that point on.

ESRI Technical Paper

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Finishing Touches
(Optional)

To finalize this example application, you need to create the diagram from a selection
inside of ArcMap. You create a simple DLL using Visual Basic to handle the opening of
a new diagram, then write VBA code in ArcMap to call the Visual Basic DLL. Any
custom DLL that you want to create and add to a Schematics application requires that the
DLL be initialized by the Schematics session. To do that, using the Designer, open the
tree view to OnInitApplication, select the Command tab, and click the Add Command
button. Select CommandExecuteProcedure from the drop-down list.

May 2006

10

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Select the CurrentCommand tab and fill in the details of your DLL. In this case, it should
look like the following:

Do not put in a Procedure Name at this point. Schematics automatically calls the
Initialize routine of the DLL to pass a handle to the current workspace. You can see this
in the code sections below.

The VBA Code

You need to paste the following code into the VBA environment of ArcMap. (You can
see that the code gets invoked when someone right-clicks in ArcMap. It checks to see if
any of the selected features are refineries or gas plants. If they are, it calls a Visual Basic
function, passing it the name of the plant and the diagram type name. The function then
creates the diagram.)
Private Function MxDocument_OnContextMenu(ByVal x As Long, ByVal y As
Long) As Boolean
On Error GoTo errhandler
Dim pMxDoc As IMxDocument 'Document object
Dim pMap As IMap 'actual map
Dim pEnumFeature As IEnumFeature
Dim pEnumFeatureSetup As IEnumFeatureSetup
Dim pFeature As IFeature
Dim featureClassName As String
Dim esriWorkspace As esriGeoDatabase.IWorkspace
Dim pDS As esriGeoDatabase.IDataset
Dim schProject As INgProject 'Main Schematics project
Dim schWrkFct As ISchematicWorkspaceFactory
Dim schWrk As ISchematicWorkspace
Dim schDS As ISchematicDataset
Dim schNgWrkMgr As ISchematicProjectMgr
Dim schDiagramType As INgDiagramType
Set pMxDoc = Application.Document 'get the current ArcMap document object
Set pMap = pMxDoc.FocusMap 'get the current map in focus
Set pEnumFeature = pMap.FeatureSelection 'get all currently selected
features

ESRI Technical Paper

11

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Set pEnumFeatureSetup = pEnumFeature


pEnumFeatureSetup.AllFields = True
Set pFeature = pEnumFeature.Next 'get the first feature in the enumeration
If pFeature Is Nothing Then Exit Function ' no selected feature
Set pDS = pFeature.Class
Set esriWorkspace = pDS.Workspace ' get the feature workspace
' Get the schematic workspace corresponding to the feature workspace
Set schWrkFct = New SchematicWorkspaceFactory
Set schWrk = schWrkFct.Open(esriWorkspace)
Set schDS = schWrk.SchematicDatasetByName("SchematicDataset") 'open
the predefined Schematic Dataset where are stored the ISP diagram definition
If schDS Is Nothing Then Exit Function
Set schNgWrkMgr = New SchematicProjectMgr 'get the manager object to
switch to the low level
Set schProject = schNgWrkMgr.OpenFromSchematicDataset(schDS) 'open
the low level schematic project
Set schDiagramType = schProject.GetDiagramType("ISP_GasPlant") ' get the
diagram type to open
If schDiagramType Is Nothing Then Exit Function
Do While (Not pFeature Is Nothing) 'loop through the features
featureClassName = Mid(pDS.Name, 9)
If featureClassName = "refineries" Or featureClassName = "gas_plants" Then
'see if this is a refineries or gas_plants object
Dim indName As Integer
Dim ISPName As String
indName = pFeature.Fields.FindField("NAME") 'find out which field is the
Name column
ISPName = pFeature.Value(indName)
' Open the diagram ( Add a dataframe and a schematic layer in the
MxDocument)
schProject.OpenDiagram schDiagramType, ISPName
End If
Set pFeature = pEnumFeature.Next
Loop
MxDocument_OnContextMenu = False 'allow the right click menu to still work
Exit Function
errhandler:
'MsgBox Err.Description
End Function

May 2006

12

Using ArcGIS Schematics for Inside Plant Representation


J-9248

The Visual Basic


DLL Code

You will need to create a DLL and compile it with the same name for all this to work, so
this is the code from the BrazilProc class of the BrazilDemo DLL.
Option Explicit
Private WithEvents m_NgProject
As esriSchematic.NgProject
Private m_IProject
As esriSchematic.INgProject
Private m_NgProjectBuilder
As esriSchematic.INgProjectBuilder
Private m_NgProjectAlgorithm
As esriSchematic.INgProjectAlgorithm
This is the standard initialize statement for custom code used by Schematics
Public Sub Initialize(ByVal ngoProject As esriSchematic.INgProject).
Set m_NgProject = ngoProject
Set m_IProject = ngoProject
Set m_NgProjectBuilder = ngoProject
Set m_NgProjectAlgorithm = ngoProject
Set colElementTypes = New Collection
End Sub
This function allows the opening of a diagram by sending in the diagram type name and
the diagram name.
Public Function OpenDiagram(ByVal DiagramType As String, ByVal
DiagramName As String)
On Error GoTo errhandler
Dim doc As NgDiagram
Dim curDoctype As INgDiagramType 'create a document type object
Set curDoctype = m_IProject.GetDiagramType(DiagramType) 'set it to a
specific document type
Set doc = curDoctype.OpenDiagram(DiagramName) 'Open the document you
want
Exit Function
errhandler:
MsgBox Err.Description
End Function

Final Testing

Once the Visual Basic DLL and VBA codes are in place, the only operation left to do is
test. Select one of the refineries or gas plants and right-click it. This should start the VBA
code, which calls Visual Basic and generates an inside plant diagram.

ESRI Technical Paper

13

Using ArcGIS Schematics for Inside Plant Representation


J-9248

Additional
Information

To get more information on this topic, use the Schematics.CHM help file located in the
Help directory of your ArcGIS installation and reference the main topic titled "Starting
your schematic project conception with the Custom Query Based Builder."

May 2006

14

For more than 35 years, ESRI has been helping people manage and analyze geographic information. ESRI offers a
framework for implementing GIS technology in any organization with a seamless link from personal GIS on the desktop
to enterprise-wide GIS client/server and data management systems. ESRI GIS solutions are flexible and can be customized to
meet the needs of our users. ESRI is a full-service GIS company, ready to help you begin, grow, and build success with GIS.

Corporate
ESRI
380 New York Street
Redlands, California
92373-8100, USA
Telephone: 909-793-2853
Fax: 909-793-5953

ESRI Regional Offices


Minneapolis
651-454-0600

Olympia
360-754-4727

St. Louis
636-949-6620

Philadelphia
610-644-3374

Boston
978-777-4543

For more information


on ESRI, call

1-800-447-9778

Washington, D.C.
703-506-9515

(1-800-GIS-XPRT)
or contact an ESRI value-added
reseller near you.
Send e-mail inquiries to

California
909-793-2853
ext. 1-1906

Charlotte
704-541-9810
Denver
303-449-7779

info@esri.com
Visit ESRIs Web site at

San Antonio
210-499-1044

www.esri.com
ESRI International Offices
Outside the United States,
contact your local ESRI distributor.
For the number of your distributor,
call ESRI at 909-793-2853,
ext. 1-1235,
or visit our Web site at

www.esri.com/distributors

Australia
www.esriaustralia.com.au

Finland
www.esri-finland.com

Italy
www.esriitalia.it

Romania
www.esriro.ro

Belgium/Luxembourg
www.esribelux.com

France
www.esrifrance.fr

Japan
www.esrij.com

Singapore
www.esrisa.com

Bulgaria
www.esribulgaria.com

Germany/Switzerland
www.esri-germany.de
www.esri-suisse.ch

Korea
www.esrikr.co.kr

Spain
www.esri-es.com

Netherlands
www.esrinl.com

Sweden
www.esri-sweden.com

Poland
www.esripolska.com.pl

Thailand
www.esrith.com

Portugal
www.esri-portugal.pt

United Kingdom
www.esriuk.com

Canada
www.esricanada.com
China (Beijing)
www.esrichina-bj.cn
China (Hong Kong)
www.esrichina-hk.com

Hungary
www.esrihu.hu
India
www.esriindia.com
Indonesia/Malaysia
62-21-527-1023
603-7874-9930

Venezuela
www.esriven.com

No. GS-35F-5086H
Place ESRI business partner or distributor address here.
Printed in USA

Anda mungkin juga menyukai