arcpy.Select_analysis choosing only a fraction of the record The 2019 Stack Overflow Developer Survey Results Are InSelecting ArcSDE polygon by point in ArcGIS Desktop using ArcPy?Splitting job on ArcPy SearchCursor?What's the best way to get the OBJECTID name?Assigning a vector to a field in feature class (UpdateCursor)Randomly assign a value to a specificed number of rows in a feature class in ArcGISIs there a faster way in python of finding the smallest number in a field?Fastest way to write large numpy arrays to feature class: as rows, or as columns?Extracting attributes of points within overlapping polygons in ArcPy?Identify duplicate attributes and keep value of earliest recordCreating separate shapefiles for each attribute record using loop in ArcPy?
Does HR tell a hiring manager about salary negotiations?
Worn-tile Scrabble
Old scifi movie from the 50s or 60s with men in solid red uniforms who interrogate a spy from the past
Why don't hard Brexiteers insist on a hard border to prevent illegal immigration after Brexit?
Can I have a signal generator on while it's not connected?
Why are there uneven bright areas in this photo of black hole?
How to translate "being like"?
Correct punctuation for showing a character's confusion
What does Linus Torvalds mean when he says that Git "never ever" tracks a file?
Can there be female White Walkers?
I am an eight letter word. What am I?
Is an up-to-date browser secure on an out-of-date OS?
Can a flute soloist sit?
Why couldn't they take pictures of a closer black hole?
Deal with toxic manager when you can't quit
Identify boardgame from Big movie
What information about me do stores get via my credit card?
For what reasons would an animal species NOT cross a *horizontal* land bridge?
Can you cast a spell on someone in the Ethereal Plane, if you are on the Material Plane and have the True Seeing spell active?
Is it okay to consider publishing in my first year of PhD?
How to obtain a position of last non-zero element
What is this business jet?
Dropping list elements from nested list after evaluation
writing variables above the numbers in tikz picture
arcpy.Select_analysis choosing only a fraction of the record
The 2019 Stack Overflow Developer Survey Results Are InSelecting ArcSDE polygon by point in ArcGIS Desktop using ArcPy?Splitting job on ArcPy SearchCursor?What's the best way to get the OBJECTID name?Assigning a vector to a field in feature class (UpdateCursor)Randomly assign a value to a specificed number of rows in a feature class in ArcGISIs there a faster way in python of finding the smallest number in a field?Fastest way to write large numpy arrays to feature class: as rows, or as columns?Extracting attributes of points within overlapping polygons in ArcPy?Identify duplicate attributes and keep value of earliest recordCreating separate shapefiles for each attribute record using loop in ArcPy?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm trying to divide up a feature class into a number of smaller sets. I have been using Select_analysis with objectid to divide up the featureclass so far but know that this is not the best method.
So for example, currently I have something like:
query = "objectid > 0 + AND objectid <= 1000"
arcpy.Select_analysis(r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours",r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours_Mereged",query_statement)
What I want to know is if I can use the number of rows in the feature class to generate the query rather than relying on the objectid? So say I get the number of rows of the feature class using arcpy.GetCount_management(featureclass) and it outputs 1.9 million, is there a way I can divide that 1.9 million into 10 parts based on the count rather than objectid?
arcpy objectid
add a comment |
I'm trying to divide up a feature class into a number of smaller sets. I have been using Select_analysis with objectid to divide up the featureclass so far but know that this is not the best method.
So for example, currently I have something like:
query = "objectid > 0 + AND objectid <= 1000"
arcpy.Select_analysis(r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours",r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours_Mereged",query_statement)
What I want to know is if I can use the number of rows in the feature class to generate the query rather than relying on the objectid? So say I get the number of rows of the feature class using arcpy.GetCount_management(featureclass) and it outputs 1.9 million, is there a way I can divide that 1.9 million into 10 parts based on the count rather than objectid?
arcpy objectid
add a comment |
I'm trying to divide up a feature class into a number of smaller sets. I have been using Select_analysis with objectid to divide up the featureclass so far but know that this is not the best method.
So for example, currently I have something like:
query = "objectid > 0 + AND objectid <= 1000"
arcpy.Select_analysis(r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours",r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours_Mereged",query_statement)
What I want to know is if I can use the number of rows in the feature class to generate the query rather than relying on the objectid? So say I get the number of rows of the feature class using arcpy.GetCount_management(featureclass) and it outputs 1.9 million, is there a way I can divide that 1.9 million into 10 parts based on the count rather than objectid?
arcpy objectid
I'm trying to divide up a feature class into a number of smaller sets. I have been using Select_analysis with objectid to divide up the featureclass so far but know that this is not the best method.
So for example, currently I have something like:
query = "objectid > 0 + AND objectid <= 1000"
arcpy.Select_analysis(r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours",r"C:UsersCHOKDesktopmulithreadingmultiprocessing.gdbContours_Mereged",query_statement)
What I want to know is if I can use the number of rows in the feature class to generate the query rather than relying on the objectid? So say I get the number of rows of the feature class using arcpy.GetCount_management(featureclass) and it outputs 1.9 million, is there a way I can divide that 1.9 million into 10 parts based on the count rather than objectid?
arcpy objectid
arcpy objectid
asked Apr 8 at 3:29
AndyAndy
191
191
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
I'm not aware of any way to do what you're asking directly. But a work around might be...
Can you add a new field to the feature class? If so, add an integer field, and use the field calculator to add sequential numbers to this field for each feature. One way to do this is explained here: https://support.esri.com/en/technical-article/000011137
You should modify this code to reset to 1 each time it reaches the number of datasets required. Eg,
sets=10
rec=0
def autoIncrement():
global rec
global sets
pStart = 1
pInterval = 1
if (rec == 0 or rec > sets):
rec = pStart
else:
rec += pInterval
return rec
Then you can use Split By Attributes to split into multiple feature classes based on the value of this field (which would be 1-10 for 10 sets). See: http://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/split-by-attributes.htm
Of course, if it is a dynamic set of data, you would have to recalculate the field each time you wanted to do the same operation again.
Note that the code for the field calculator above would not have the consecutive records kept together (ie, not the first 10% of records, but 1 record in every 10). If you need the consecutive records kept together, this could be done with a tweak to the above code.
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
add a comment |
Creating and populating new field could significantly slow things down.
This is why I tested 2 alternatives below on 150k long point dataset. They use similar approach - splitting the list of OBJECTIDs into equal size chunks:
import arcpy, time
from arcpy import env
env.overwriteOutput = True
infc="many_points"
OIDs=[row[0] for row in arcpy.da.TableToNumPyArray(infc,"objectid")]
n=len(OIDs)/10
t0 = time.time()
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
q='OBJECTID >=%i AND OBJECTID <=%i' %(chunk[0],chunk[-1])
arcpy.Select_analysis(infc, "C:/scratch/scratch.gdb/%s"%chr(N), q)
N+=1
arcpy.AddMessage("Seconds %i using query" %int(time.time()-t0))
t0 = time.time()
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,infc)[0]
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
lyr.setSelectionSet ("NEW",chunk)
arcpy.CopyFeatures_management(lyr, "C:/scratch/scratch.gdb/%s"%chr(N))
N+=1
arcpy.AddMessage("Seconds %i using layer selection" %int(time.time()-t0))
OUTPUT:
Seconds 57 using query
Seconds 34 using using layer selection
It seems using setSelectionSet method on a layer coupled with Copy features works much faster than Select with query.
Note: Populating integer field in this sample set took 21 second.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318065%2farcpy-select-analysis-choosing-only-a-fraction-of-the-record%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I'm not aware of any way to do what you're asking directly. But a work around might be...
Can you add a new field to the feature class? If so, add an integer field, and use the field calculator to add sequential numbers to this field for each feature. One way to do this is explained here: https://support.esri.com/en/technical-article/000011137
You should modify this code to reset to 1 each time it reaches the number of datasets required. Eg,
sets=10
rec=0
def autoIncrement():
global rec
global sets
pStart = 1
pInterval = 1
if (rec == 0 or rec > sets):
rec = pStart
else:
rec += pInterval
return rec
Then you can use Split By Attributes to split into multiple feature classes based on the value of this field (which would be 1-10 for 10 sets). See: http://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/split-by-attributes.htm
Of course, if it is a dynamic set of data, you would have to recalculate the field each time you wanted to do the same operation again.
Note that the code for the field calculator above would not have the consecutive records kept together (ie, not the first 10% of records, but 1 record in every 10). If you need the consecutive records kept together, this could be done with a tweak to the above code.
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
add a comment |
I'm not aware of any way to do what you're asking directly. But a work around might be...
Can you add a new field to the feature class? If so, add an integer field, and use the field calculator to add sequential numbers to this field for each feature. One way to do this is explained here: https://support.esri.com/en/technical-article/000011137
You should modify this code to reset to 1 each time it reaches the number of datasets required. Eg,
sets=10
rec=0
def autoIncrement():
global rec
global sets
pStart = 1
pInterval = 1
if (rec == 0 or rec > sets):
rec = pStart
else:
rec += pInterval
return rec
Then you can use Split By Attributes to split into multiple feature classes based on the value of this field (which would be 1-10 for 10 sets). See: http://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/split-by-attributes.htm
Of course, if it is a dynamic set of data, you would have to recalculate the field each time you wanted to do the same operation again.
Note that the code for the field calculator above would not have the consecutive records kept together (ie, not the first 10% of records, but 1 record in every 10). If you need the consecutive records kept together, this could be done with a tweak to the above code.
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
add a comment |
I'm not aware of any way to do what you're asking directly. But a work around might be...
Can you add a new field to the feature class? If so, add an integer field, and use the field calculator to add sequential numbers to this field for each feature. One way to do this is explained here: https://support.esri.com/en/technical-article/000011137
You should modify this code to reset to 1 each time it reaches the number of datasets required. Eg,
sets=10
rec=0
def autoIncrement():
global rec
global sets
pStart = 1
pInterval = 1
if (rec == 0 or rec > sets):
rec = pStart
else:
rec += pInterval
return rec
Then you can use Split By Attributes to split into multiple feature classes based on the value of this field (which would be 1-10 for 10 sets). See: http://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/split-by-attributes.htm
Of course, if it is a dynamic set of data, you would have to recalculate the field each time you wanted to do the same operation again.
Note that the code for the field calculator above would not have the consecutive records kept together (ie, not the first 10% of records, but 1 record in every 10). If you need the consecutive records kept together, this could be done with a tweak to the above code.
I'm not aware of any way to do what you're asking directly. But a work around might be...
Can you add a new field to the feature class? If so, add an integer field, and use the field calculator to add sequential numbers to this field for each feature. One way to do this is explained here: https://support.esri.com/en/technical-article/000011137
You should modify this code to reset to 1 each time it reaches the number of datasets required. Eg,
sets=10
rec=0
def autoIncrement():
global rec
global sets
pStart = 1
pInterval = 1
if (rec == 0 or rec > sets):
rec = pStart
else:
rec += pInterval
return rec
Then you can use Split By Attributes to split into multiple feature classes based on the value of this field (which would be 1-10 for 10 sets). See: http://desktop.arcgis.com/en/arcmap/latest/tools/analysis-toolbox/split-by-attributes.htm
Of course, if it is a dynamic set of data, you would have to recalculate the field each time you wanted to do the same operation again.
Note that the code for the field calculator above would not have the consecutive records kept together (ie, not the first 10% of records, but 1 record in every 10). If you need the consecutive records kept together, this could be done with a tweak to the above code.
edited Apr 8 at 4:52
answered Apr 8 at 4:17
Son of a BeachSon of a Beach
1,581719
1,581719
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
add a comment |
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
1
1
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
Building off this, in arcpy you could set up code to generate a new field (doesn't need to be LONG) and populate using da.updateCursor a unique value every x rows, where x is calculated based on initial count. Then split the dataset using Split Layer By Attributes. The advantage here is that you don't need to iterate through selections and can use the split tool to break up the feature class; the disadvantage to both this and Son of a Beach's is the time to update the field.
– smiller
Apr 8 at 4:29
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
I have updated the answer to use Split By Attributes, as recommended by @smiller. Good idea, that.
– Son of a Beach
Apr 8 at 4:45
add a comment |
Creating and populating new field could significantly slow things down.
This is why I tested 2 alternatives below on 150k long point dataset. They use similar approach - splitting the list of OBJECTIDs into equal size chunks:
import arcpy, time
from arcpy import env
env.overwriteOutput = True
infc="many_points"
OIDs=[row[0] for row in arcpy.da.TableToNumPyArray(infc,"objectid")]
n=len(OIDs)/10
t0 = time.time()
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
q='OBJECTID >=%i AND OBJECTID <=%i' %(chunk[0],chunk[-1])
arcpy.Select_analysis(infc, "C:/scratch/scratch.gdb/%s"%chr(N), q)
N+=1
arcpy.AddMessage("Seconds %i using query" %int(time.time()-t0))
t0 = time.time()
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,infc)[0]
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
lyr.setSelectionSet ("NEW",chunk)
arcpy.CopyFeatures_management(lyr, "C:/scratch/scratch.gdb/%s"%chr(N))
N+=1
arcpy.AddMessage("Seconds %i using layer selection" %int(time.time()-t0))
OUTPUT:
Seconds 57 using query
Seconds 34 using using layer selection
It seems using setSelectionSet method on a layer coupled with Copy features works much faster than Select with query.
Note: Populating integer field in this sample set took 21 second.
add a comment |
Creating and populating new field could significantly slow things down.
This is why I tested 2 alternatives below on 150k long point dataset. They use similar approach - splitting the list of OBJECTIDs into equal size chunks:
import arcpy, time
from arcpy import env
env.overwriteOutput = True
infc="many_points"
OIDs=[row[0] for row in arcpy.da.TableToNumPyArray(infc,"objectid")]
n=len(OIDs)/10
t0 = time.time()
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
q='OBJECTID >=%i AND OBJECTID <=%i' %(chunk[0],chunk[-1])
arcpy.Select_analysis(infc, "C:/scratch/scratch.gdb/%s"%chr(N), q)
N+=1
arcpy.AddMessage("Seconds %i using query" %int(time.time()-t0))
t0 = time.time()
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,infc)[0]
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
lyr.setSelectionSet ("NEW",chunk)
arcpy.CopyFeatures_management(lyr, "C:/scratch/scratch.gdb/%s"%chr(N))
N+=1
arcpy.AddMessage("Seconds %i using layer selection" %int(time.time()-t0))
OUTPUT:
Seconds 57 using query
Seconds 34 using using layer selection
It seems using setSelectionSet method on a layer coupled with Copy features works much faster than Select with query.
Note: Populating integer field in this sample set took 21 second.
add a comment |
Creating and populating new field could significantly slow things down.
This is why I tested 2 alternatives below on 150k long point dataset. They use similar approach - splitting the list of OBJECTIDs into equal size chunks:
import arcpy, time
from arcpy import env
env.overwriteOutput = True
infc="many_points"
OIDs=[row[0] for row in arcpy.da.TableToNumPyArray(infc,"objectid")]
n=len(OIDs)/10
t0 = time.time()
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
q='OBJECTID >=%i AND OBJECTID <=%i' %(chunk[0],chunk[-1])
arcpy.Select_analysis(infc, "C:/scratch/scratch.gdb/%s"%chr(N), q)
N+=1
arcpy.AddMessage("Seconds %i using query" %int(time.time()-t0))
t0 = time.time()
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,infc)[0]
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
lyr.setSelectionSet ("NEW",chunk)
arcpy.CopyFeatures_management(lyr, "C:/scratch/scratch.gdb/%s"%chr(N))
N+=1
arcpy.AddMessage("Seconds %i using layer selection" %int(time.time()-t0))
OUTPUT:
Seconds 57 using query
Seconds 34 using using layer selection
It seems using setSelectionSet method on a layer coupled with Copy features works much faster than Select with query.
Note: Populating integer field in this sample set took 21 second.
Creating and populating new field could significantly slow things down.
This is why I tested 2 alternatives below on 150k long point dataset. They use similar approach - splitting the list of OBJECTIDs into equal size chunks:
import arcpy, time
from arcpy import env
env.overwriteOutput = True
infc="many_points"
OIDs=[row[0] for row in arcpy.da.TableToNumPyArray(infc,"objectid")]
n=len(OIDs)/10
t0 = time.time()
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
q='OBJECTID >=%i AND OBJECTID <=%i' %(chunk[0],chunk[-1])
arcpy.Select_analysis(infc, "C:/scratch/scratch.gdb/%s"%chr(N), q)
N+=1
arcpy.AddMessage("Seconds %i using query" %int(time.time()-t0))
t0 = time.time()
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,infc)[0]
N=65
for i in xrange(0, len(OIDs), n):
chunk=OIDs[i:i + n]
lyr.setSelectionSet ("NEW",chunk)
arcpy.CopyFeatures_management(lyr, "C:/scratch/scratch.gdb/%s"%chr(N))
N+=1
arcpy.AddMessage("Seconds %i using layer selection" %int(time.time()-t0))
OUTPUT:
Seconds 57 using query
Seconds 34 using using layer selection
It seems using setSelectionSet method on a layer coupled with Copy features works much faster than Select with query.
Note: Populating integer field in this sample set took 21 second.
answered Apr 8 at 9:09
FelixIPFelixIP
16.7k11642
16.7k11642
add a comment |
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318065%2farcpy-select-analysis-choosing-only-a-fraction-of-the-record%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown