{ "metadata": { "name": "", "signature": "sha256:d5e7185920adf0ffeb2871081f81d27b79eaff52c3f3976f0c432d0a5020d6d0" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# NumPy Data Access Using ArcPy " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import arcpy as ARCPY\n", "import arcpy.da as DA\n", "inputFC = r'../data/CA_Polygons.shp'\n", "tab = DA.TableToNumPyArray(inputFC, ['PCR2000', 'POP2000'])\n", "print(tab)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# SSDataObject\n", "1. Environment Settings (Except Extent)\n", "2. Bad Records\n", "3. Error/Warning Messages\n", "4. Localization\n", "5. **Feature Accounting**\n", " * Cursors and DataAccess are not assured to read attributes in order.\n", "\n", " * Keeps track of the shapes and their attributes so that one can create output features w/o post-joins.\n", "\n", " * Unique ID works with Spatial Weights Formats in ArcGIS, PySAL, R, Matlab, GeoDa etc.." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import SSDataObject as SSDO\n", "ssdo = SSDO.SSDataObject(inputFC)\n", "ssdo.obtainData(ssdo.oidName, ['PCR2000', 'POP2000'])\n", "print(ssdo.fields['PCR2000'].data)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Using PANDAS to get that R Feel" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as PANDAS\n", "ids = [ssdo.order2Master[i] for i in range(ssdo.numObs)]\n", "convertDictDF = {}\n", "for fieldName, fieldObject in ssdo.fields.items():\n", " convertDictDF[fieldName] = fieldObject.data\n", "df = PANDAS.DataFrame(convertDictDF, index = ids)\n", "print(df)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Advanced Analysis [SciPy Example - KMeans]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as NUM\n", "import scipy.cluster.vq as CLUST\n", "import arcgisscripting as ARC\n", "X = NUM.empty((ssdo.numObs,2), dtype = float)\n", "X[:,0] = df['PCR2000']\n", "X[:,1] = df['POP2000']\n", "whiteData = CLUST.whiten(X)\n", "centers, distortion = CLUST.kmeans(whiteData, 5)\n", "groups = ARC._ss.closest_centroid(whiteData, centers)\n", "print(groups)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "ARCPY.env.overwriteOutput = True\n", "outputFC = r'C:\\Data\\UC\\DevSummit15\\OpenSource\\output\\kmeans_ca.shp'\n", "outField = SSDO.CandidateField('SS_GROUP', 'LONG', groups)\n", "outFields = {'SS_GROUP': outField}\n", "ssdo.output2NewFC(outputFC, outFields, appendFields = [\"NEW_NAME\", \"PERCNOHS\"])" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }